Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用服务器浏览网站时,在iisreset之后拒绝访问临时ASP.NET文件文件夹';自己的Internet Explorer_Asp.net_Security - Fatal编程技术网

使用服务器浏览网站时,在iisreset之后拒绝访问临时ASP.NET文件文件夹';自己的Internet Explorer

使用服务器浏览网站时,在iisreset之后拒绝访问临时ASP.NET文件文件夹';自己的Internet Explorer,asp.net,security,Asp.net,Security,配置: Windows Server 2008 R2/IIS 7.5 使用Windows集成身份验证的ASP.NET web应用程序。应用程序池标识设置为NetworkService。以.NET Framework 2.0为目标。托管管道模式=经典 授予用户组和Internet来宾帐户的临时ASP.NET文件文件夹的完全权限 作为管理员组成员的测试用户帐户(我们称之为testuser)登录到服务器 用户帐户控制处于启用状态 Internet增强的安全性已关闭 Internet Explorer

配置:

  • Windows Server 2008 R2/IIS 7.5

  • 使用Windows集成身份验证的ASP.NET web应用程序。应用程序池标识设置为NetworkService。以.NET Framework 2.0为目标。托管管道模式=经典

  • 授予用户组和Internet来宾帐户的临时ASP.NET文件文件夹的完全权限

  • 作为管理员组成员的测试用户帐户(我们称之为testuser)登录到服务器

  • 用户帐户控制处于启用状态

  • Internet增强的安全性已关闭

  • Internet Explorer正在使用所有默认安全设置,并且所有兼容性视图设置都已关闭

现在我做以下几点:

  • iisreset.exe

  • 清除ASP.NET临时文件文件夹

  • 打开Internet Explorer

  • 浏览到本地ASP.NET网站=>success

  • 关闭Internet Explorer

  • iisreset.exe

  • 打开Internet Explorer

  • 浏览到本地ASP.NET网站=>FAIL

  • 到目前为止,我发现在iisreset.exe之后,我可以做一些事情来保持网站正常工作(每项工作都是单独进行的,也就是说,它们不必组合在一起):

    • 关闭用户帐户控制

    • 以管理员身份登录

    • 以管理员身份运行Internet Explorer…(而不是默认为testuser帐户)

    • 使用Google Chrome或Mozilla Firefox而不是Internet Explorer(?!?)这两种浏览器不必使用管理员帐户运行,但在用户帐户下运行并启用用户帐户控制时,这两种浏览器工作得非常好

    • 使用在外部计算机上运行的Internet Explorer实例浏览站点

    Windows Server 2003上不存在此问题。这似乎与用户帐户控制有关

    用户是否是Administrators组的成员没有区别

    使用Process Monitor,当NetworkService(w3wp.exe)模拟用户时,似乎会出现拒绝访问问题,但鉴于授予临时ASP.NET文件文件夹的所有权限,这仍然没有多大意义

    问题是:

    为什么只有本地Internet Explorer浏览器以非管理员用户身份运行时才会出现这种情况?我想使用本地Internet Explorer浏览器进行测试,但在IIS设置后必须清除临时ASP.NET文件文件夹很烦人

    在这种情况下,Internet Explorer与Chrome或Firefox(两者都可用)有什么不同?我可以理解这是否影响了所有本地浏览器,但事实并非如此

    当检测到Internet Explorer被用作客户端浏览器时,我可以理解我的web应用程序是否做了一些特殊的事情,但我不认为是这样,我们在这里讨论的是程序集绑定失败-我不尝试访问任意文件夹

    编辑:

    • 以上测试是使用Internet Explorer 8完成的。此后,我在同一台机器上尝试了Internet Explorer 9,但结果相同

    • 如果我为网站启用ASP.NET模拟,问题就会消失,但我仍然想知道,当禁用ASP.NET模拟时,为什么它不适用于本地Internet Explorer

    编辑2:

    我第一次没有提到的是,登录是一个分两步的过程:当访问应用程序(我们称之为“MyWebApp”)时,您将被重定向到MyWebApp/登录目录,在被授予访问驻留在该登录目录中的登录页之前,系统将提示您输入Windows凭据

    这总是有效的

    输入应用程序凭据后(如果登录页面中的代码无法识别您的Windows凭据),您将被重定向到根文件夹中的页面

    MyWebApp和MyWebApp/登录的身份验证设置如下:

                                 MyWebApp         MyWebApp/Login
                                 --------         --------------
    Anonymous Authentication     Enabled          Disabled
    ASP.NET Impersonation        Disabled         Enabled
    Basic Authentication         Disabled         Disabled
    Digest Authentication        Disabled         Disabled
    Forms Authentication         Enabled          Enabled
    Windows Authentication       Enabled          Enabled
    
    在这两种情况下,我都收到“基于质询和基于登录重定向的身份验证不能同时使用”警告

    这些设置可以追溯到我参与该项目之前,但这不是重点。现在,我只对如何正确使用它感兴趣——最好是一组适用于IIS 6.0和7.x的设置


    为“MyWebApp/Login”设置ASP.NET Impersonation=Disabled似乎是解决我的问题的另一种方法,但显然还有更多的工作要做。

    这个问题几乎肯定与Internet Explorer的使用有关,而不是(你可能会从FF或Chrome中得到什么)。Windows身份验证和身份验证的组合。如果你这样做,你可能会在那里看到同样的行为。类似地,禁用Windows身份验证(强制IE使用basic)或禁用模拟可能会导致IE表现得像Firefox一样。

    我无法想象浏览器与此有任何关系,但如果您遇到了差异,则一定是真的。 为了使ASP.NET能够编译ASPX文件,需要导入两件事(正如我们今天发现的:

  • 对ASP.NET临时文件目录(其中写入编译的DLL)的写访问权限
  • 对Windows临时文件的写入访问权限(其中csc.exe写入诸如*.obj之类的中间文件)

  • 哪个用户应该有访问权限?视情况而定。在我们的示例中是应用程序池用户。在您的示例中,可能是模拟用户。或者IUSR。对我来说,这部分仍然不清楚。

    出于兴趣,是否启用了Internet Explorer的集成Windows身份验证?转到工具->高级并向下滚动列表。如果是,请禁用它,然后重试