手机版

Win2008服务器IIS7设置身份模拟(ASP.NET模拟)

时间:2021-10-17 来源:互联网 编辑:宝哥软件园 浏览:

作者:小鹰转载,请注明出处。与IIS 6相比,IIS7有了很大的变化。在IIS 6下可以设置的一些设置在IIS 7下设置时会改变。在身份模拟的配置上,IIS7和IIS6有很大的不同。网上关于IIS6身份模拟的文章很多,但是关于IIS7的文章很少。我会在这个博客里写下一些折腾的经历,供大家参考。IIS 7中有两种ASP.NET应用程序模式。一个是集成模式,这是默认模式,微软推荐,另一个是经典模式,用来兼容旧版本。集成模式使用更方便、更安全。在配置文件中写入模拟账户的用户名和密码更安全、更方便。既然已经使用了IIS 7,不如按照微软推荐的方式使用集成模式。在集成模式下,身份模拟完全可以通过界面完成:image

首先,如上图所示,IIS 7在服务器级别下有一个IIS身份验证。双击这个图标,我们会看到下图:image

在这个图中,我们可以看到IIS7有一个额外的ASP.NET模拟功能。单击操作中的启用以打开身份模拟功能,然后单击编辑以编辑身份模拟。image

我们看到上面的编辑框。在此编辑框中,我们指定身份模拟的帐户。此帐户必须是本地现有帐户。单击设置输入此帐户的名称和密码。然后单击确定。在这一点上,根据MSDN的帮助文件,身份模拟应该算是成功设定。然后我做了一个简单的测试页面,看看身份模拟是否成功。测试程序如下:protected void page _ load(对象发送方,eventargs e) {response.write(系统。security . principal . windowsidentity . get current()。姓名);}运行的结果其实是:NT AUTHORITY\IUSR,也就是说,Asp.net没有用MyAccount模拟运行,但还是用IUSR账号模拟运行。搜索了很久,发现是以下问题导致的:使用Virtual Studio 2008生成网站时,默认情况下web.config文件中会有这样的设置:identity impersonate=' true '/这个设置是为IIS 6做身份模拟而设置的。在这种情况下,用户身份的验证交给了IIS。当允许匿名登录时,IIS会为ASP.NET应用程序提供一个用于匿名登录的身份(默认情况下为IUSR)。当不允许匿名登录时,IIS会将经过身份验证的身份传递给ASP.NET应用程序。ASP.NET的具体访问权限由该帐户的权限决定。在IIS 7下,此设置已过期。如果使用古典模式,需要这样设置。找到问题原因后,我从web.config中删除了配置项标识impersonate=' true '/删除后,可以使用界面上配置的用户名来模拟账户。但是,先不要太高兴,然后新的问题就会出现。错误:

Could not load file or assembly 'xxxx' or one of its dependencies. Access is denied.

描述:在当前web请求的执行过程中发生了未处理的异常。请查看mor的堆栈跟踪。e .关于错误及其在代码中起源的信息。异常详细信息:系统。IO.FileLoadException:无法加载文件或程序集“getpathfilelib”或其依赖项之一。访问被拒绝。sourceerror:从错误提示来看,应该是当前模拟帐户没有足够的权限在bin目录下执行xxxx.dll。因此,我将bin目录完全控制权限授予了模拟帐户MyAccount,但结果仍然失败。网上搜了一下,有人说需要设置目录c: \ windows \ Microsoft。net \ framework \ v2.0.50727 \临时作为完全控制,所以我做了,但还是失败了。无奈之下,我把我的MyAccount账号加到了IIS_IUSRS组,问题终于解决了。image

现在,我们运行上面显示当前用户的代码,结果是MachineName \ MyAccout。注意:我们必须删除身份模拟='true'/。如果模拟帐户仅设置为identity impersonate='false'/则它将成为IIS APPPOOL\DefaultAppPool,这是不正确的。这里,在IIS7下设置身份模拟就全部完成了。

版权声明:Win2008服务器IIS7设置身份模拟(ASP.NET模拟)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。