在代码中模拟IIS帐户,这个问题对我来说看来挺复杂,快告诉我吧!别折腾我了!!!!!!!!

yezby20061025 2006-10-25 04:52:05
WEB.CONFIG:
<authentication mode="Windows"></authentication>
*.CS
...
System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
....
impersonationContext.Undo();

错误信息:"匿名标识不能执行模拟。 "
我设置了,<authentication mode="Windows"></authentication>还要怎么做呢?
...全文
153 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
aafshzj 2006-10-25
  • 打赏
  • 举报
回复
反正这个系统设计有点怪哦。就算现在没问题。每次访问使用文件,并发也可能有问题。
hegang888888888 2006-10-25
  • 打赏
  • 举报
回复
支持:scow(怡红快绿)
scow 2006-10-25
  • 打赏
  • 举报
回复
那个链接提供了完整的模拟代码,拷贝就可以用,效果是模拟后改变了WindowsIdentity.GetCurrent(),
关于web.config:
<identity impersonate="true" username="" password=""/>
配置节我凭记忆写的,最好查询msdn确认
yezby20061025 2006-10-25
  • 打赏
  • 举报
回复
to scow:看不太懂,明白点可以吗?
yezby20061025 2006-10-25
  • 打赏
  • 举报
回复
之所以要用模拟是因为要读写文件,IIS只是启用匿名访问,其它的都是默认的(没有选择)
yezby20061025 2006-10-25
  • 打赏
  • 举报
回复
代码:
System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
FileStream fs0 = new FileStream(Server.MapPath(".") + "\\HOME\\register.txt", FileMode.Open, FileAccess.Read);
//打开文本文件
StreamReader sr0 = new StreamReader(fs0, Encoding.Default);
string reg_info = sr0.ReadLine();
sr0.Close();
fs0.Close();
if (reg_info != MACCPU_PASS)
{

int counter;
FileStream fs = new FileStream(Server.MapPath(".") +"\\HOME\\counter.txt", FileMode.Open, FileAccess.Read);
//打开文本文件
StreamReader sr = new StreamReader(fs, Encoding.Default);
string num = sr.ReadLine();
if (num == "")
counter = 0;
else
counter = Int32.Parse(num);
sr.Close();
fs.Close();
if (counter <= 50)
{
int counter_new = counter + 1;
fs = new FileStream(Server.MapPath(".") +"\\HOME\\counter.txt", FileMode.Create, FileAccess.Write);
//建立StreamWriter为写做准备
StreamWriter rw = new StreamWriter(fs, Encoding.Default);
//使用WriteLine写入内容
rw.WriteLine(counter_new.ToString());
//将缓冲区的内容写入文件
//关闭rw对象
rw.Close();
fs.Close();
}
else
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["schoolmanage2005ConnectionString"].ConnectionString);
SqlCommand comm = new SqlCommand("delete from Role_user", conn);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
Response.Redirect("~/HOME/xueke.aspx");
}
}
impersonationContext.Undo();
scow 2006-10-25
  • 打赏
  • 举报
回复
http://blog.joycode.com/joe/archive/2004/11/29/39890.aspx.
另外在WEB.CONFIG里面直接配置模拟,不在代码中写如何.这样可以指定要模拟的用户
aafshzj 2006-10-25
  • 打赏
  • 举报
回复
当时为什么要用这个呢?其它地方用到了吗?IIS如何设置的?
yezby20061025 2006-10-25
  • 打赏
  • 举报
回复
如果删掉那段的话,访问就会提示:拒绝访问..一个引用的组件,好象是没有权限似的.
myminimouse 2006-10-25
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20030127/16/1395727.html
aafshzj 2006-10-25
  • 打赏
  • 举报
回复
删掉那段代码算了,看不出有多大意义。
yezby20061025 2006-10-25
  • 打赏
  • 举报
回复
还是第一次做这个东西,哎,没办法啊!老兄!
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-25 04:52
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。