IIS 7.5提示输入用户名和密码

Cha*_*ian 8 iis asp.net-mvc iis-7.5

我们的应用程序配置为使用表单身份验证,并且在大多数计算机上它运行良好.但是,我在我们的一个开发人员工作站上遇到了开发环境问题.当我转到应用程序的其中一个URL时,如下所示:

HTTP://iweb.local/reports/

IIS提示我输入密码,如下所示:

IIS会提示输入用户名和密码

(该名称iweb.local在hosts文件中设置为指向127.0.0.1.本质上它是localhost的别名.我们将IIS站点配置为使用主机头,以便将来可能支持多个应用程序.)

如果我访问应用程序中的大多数其他URL,例如http://iweb.local/,则不会提示我输入密码.并且在任何其他开发人员计算机上使用完全相同的代码库时,我都不会被提示输入密码.只有这台机器才有问题.这使我有理由相信这不是编码的问题.

我尝试过的事情:

  • 使用其他Web浏览器进行测试.在出现问题的机器上,无论我使用什么浏览器,都会出现问题.我在FireFox和IE9中得到了相同的提示.
  • 在其他开发者机器上测试.这些问题不会发生.它只发生在单个开发人员框中.
  • 使用适当的重构将代码和资产复制~/Areas/Reports~/Areas/ReportsTest,并加载http://iweb.local/reportstest/.这样可行; 浏览器不再提示输入用户名和密码.但是,更改URL不是我们的应用程序的选项.
  • 检查IIS身份验证配置.启用匿名身份验证和表单身份验证.其他一切都被禁用了.这在所有开发人员计算机上都是相同的,包括可以工作的计算机和不运行的计算机.
  • 检查事件日志.IIS未将任何内容记录到事件日志中.
  • 检查IIS日志.日志包含成功请求的条目(例如,当我打开时http://iweb.local),但它不会记录任何提示用户输入密码的请求.
  • 使用FireBug检查请求和响应标头.对于任一URL的请求,请求标头看起来都相同.响应头http://iweb.local/reports有两个选项WWW-Authenticate:NegotiateNTLM.由此,我确认IIS正在指示浏览器提示输入密码.但我并不接近理解为什么.
  • 关闭IIS,将World Wide Web Publishing服务设置为具有手动启动类型,以便它不会自动启动并重新启动计算机.然后我检查,看看是否任何http://iweb.localhttp://iweb.local/reports/进行响应请求.两者都没有,确认是IIS正在处理请求.
  • 停止IIS,从开发人员的硬盘驱动器中删除整个项目,并从源代码管理中检索它.我的想法是,它可能是其中一个文件夹的权限问题(虽然我不明白这是怎么回事,因为这是一个MVC应用程序)并且通过这个过程将确保所有文件夹都有正确的权限.但它没有改变任何东西.
  • 完全卸载IIS,重新启动计算机,然后重新安装IIS.这也不起作用.

我没有想法.我在这个未配置与其他开发人员框相同的开发人员框中找不到任何内容.

那么:有没有人知道如何启用更深层次的日志记录或跟踪来找出IIS为什么要求输入密码?任何人都可以想到任何可能造成这种情况的事情,我还没有找到过吗?

这是在64位环境中在IIS 7.5上运行的ASP.NET MVC 3应用程序.reportsURL 的一部分配置为MVC区域.

UPDATE

在我的Web.config文件中,这是在违规机器上设置身份验证模式的方式.

<authentication mode="Forms">
    <forms loginUrl="~/account/login" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

<authentication>"报告"区域的Web.config文件中没有元素.

小智 11

如果名为"Reports"的应用程序中有一个文件夹,并且SQL Server Reporting Services安装在服务器上,则名为"Reports"的Reporting Services Virtual Directory文件夹将与应用程序"Reports"文件夹冲突.要修复此打开的Reporting Services配置管理器(开始 - >所有程序 - > MS SQL Server->配置工具 - > Reporting Services配置管理器),并将虚拟目录从"报告"更改为任何其他名称("TestReports")下的左侧菜单中的"报表管理器URL".

这将解决IIS身份验证问题