我们的应用程序配置为使用表单身份验证,并且在大多数计算机上它运行良好。但是,我在我们的一个开发人员工作站上遇到了开发环境问题。当我转到应用程序的其中一个URL时,如下所示:
IIS提示我输入密码,如下所示:
(在hosts文件中设置名称iweb.local
以指向127.0.0.1。本质上它是localhost的别名。我们将IIS站点配置为使用主机头,以便我们可以将来支持多个应用程序。)
如果我访问应用程序中的大多数其他网址,例如http://iweb.local/,则系统不会提示我输入密码。并且在任何其他开发人员计算机上使用完全相同的代码库时,我都不会被提示输入密码。只有这台机器才有问题。这使我有理由相信这不是编码的问题。
我尝试过的事情:
~/Areas/Reports
复制到~/Areas/ReportsTest
,然后加载http://iweb.local/reportstest/
。这样可行;浏览器不再提示输入用户名和密码。但是,更改URL不是我们的应用程序的选项。http://iweb.local
时),但它不会记录任何提示用户输入密码的请求。http://iweb.local/reports
的响应标头有WWW-Authenticate
的两个选项:Negotiate
和NTLM
。由此,我确认IIS正在指示浏览器提示输入密码。但我不太了解原因。http://iweb.local
或http://iweb.local/reports/
是否响应了请求。两者都没有,确认是IIS正在处理请求。我没有想法。我在这个未配置与其他开发人员框相同的开发人员框中找不到任何内容。
所以:有没有人知道如何启用更深层次的日志记录或跟踪来找出IIS要求输入密码的原因?任何人都可以想到任何可能造成我尚未找到的事情吗?
这是在64位环境中在IIS 7.5上运行的ASP.NET MVC 3应用程序。 URL的reports
部分配置为MVC区域。
更新
在我的Web.config文件中,这是在违规机器上设置身份验证模式的方式。
<authentication mode="Forms">
<forms loginUrl="~/account/login" timeout="2880" />
</authentication>
“报告”区域的Web.config文件中没有<authentication>
元素。
答案 0 :(得分:11)
如果服务器上安装了名为“Reports”且SQL Server Reporting Services的应用程序中的文件夹,则名为“Reports”的Reporting Services Virtual Directory文件夹将与应用程序“Reports”文件夹冲突。要修复此打开的Reporting Services配置管理器(开始 - >所有程序 - > MS SQL Server->配置工具 - > Reporting Services配置管理器),请将虚拟目录从“报告”更改为任何其他名称(“TestReports” “)在左侧菜单中的”报表管理器URL“下。
这将解决IIS身份验证问题
答案 1 :(得分:0)
使用IE9中的fiddler或dev工具来查看请求。然后,这将显示标题中的内容导致弹出窗口。它可能是基本身份验证或NT身份验证,浏览器无法满足请求。由于它已本地化到一台计算机,因此请检查IIS是否仅配置为匿名&amp;检查所请求文件的权限。
答案 2 :(得分:0)
在位置栏中,键入about:config,然后按Enter。
about:config“这可能会使保修无效!”警告页面可能会出现。单击,我保证,我会小心的,继续进入about:config页面。
在about:config页面中,搜索首选项network.automatic-ntlm-auth.trusted-uris,然后双击它。 在出现的提示中,键入要允许的服务器列表,以逗号和空格分隔。例如,如果要允许http://myinternalserver和http://anotherinternalserver,则可以键入myinternalserver,另一个internalserver。 按确定。