3

使用 Visual Studio 的内置 Web 服务器时,每次我发出页面请求时,都会弹出标准登录框并要求提供凭据。如果我真的输入我的凭据,它就不起作用,所以我只需要点击取消 5 次,它就会消失。

当我通过 IIS(本地或在测试服务器上)运行应用程序时,它工作得很好(没有登录框出现)。

任何人都知道如何解决这个问题或知道可能是什么原因造成的?

4

4 回答 4

1

我假设您的意思是 JavaScript 警报框外观的登录对话框,对吧?当您向 IIS 禁用匿名访问的网站部分发出请求时,会弹出此对话框。它不同于 ASP.NET 身份验证。

您是否对网站的某些部分进行了保护?或者您是否向外部站点发出任何 HTTP 请求,例如图像等?

如果您的页面在多次点击取消后看起来还不错,那么它一定是对受保护文件(如图像、css、js 或其他文件)的 HTTP 请求之一。

当您在该登录对话框中点击取消时,我会查看 Fiddler 或 Firebug 以查看是否有任何请求失败。

我还会尝试清除在 IIS 上运行的页面上的缓存/身份验证会话,以查看它是否真的向您显示了该登录对话框。

于 2009-01-29T23:02:47.123 回答
1

我有同样的问题。但是,我的解决方案不同,问题似乎也不同。

我一直在使用 VS 2008 开发 ASP.NET 2.0 Web 应用程序。内置 IIS 服务器一切正常。我大约一周没有打开这个项目,然后当我在 VS 中选择“在浏览器中查看”时,系统提示我输入我的 Windows 登录凭据。这个项目以前从来没有这样做过,所以我有点困惑。我检查了所有 web.config 设置,一切似乎都很好。我的项目设置似乎也正确。我决定通过在 VS 中使用网络路径在我的网络上的一个单独的开发盒上打开同一个项目来测试该项目。我再次选择了“在浏览器中查看”,它运行良好。没有登录提示。

这告诉我问题不在于实际的 Web 项目本身,而在于我的开发环境。我按照上面的建议检查了所有浏览器设置,它们是正确的。然后我比较了我的项目设置,同时我在两个开发框中都打开了相同的项目(相同的物理文件)。我注意到了一个不同...

在属性页中的启动选项下,Web 服务器被设置为在这两种情况下都使用默认 Web 服务器。但是,在询问我的凭据的框中,选择了 NTLM 身份验证复选框。我取消选择它,它解决了这个问题。

我不确定这是怎么可能的,因为我打开的是相同的项目文件,并且会假设项目设置完全相同。一周前它运行良好的事实真的让我感到困惑。我把它归结为 VS 2008 的问题。我希望这对可能遇到此问题的其他人有所帮助。

于 2013-03-30T23:58:21.320 回答
0

这是因为 localhost 不在我受信任的站点中,所以它不会进行自动 NTLM 身份验证......我不确定为什么会这样,但它是......将 localhost 添加到列表中修复了它。

于 2009-05-19T14:59:11.680 回答
0

在您的项目中,应该有一个vwd.webinfo文件。

以下行在调试时控制身份验证(在 IISExpress 中)。如下设置以避免所有对话框。

<VisualWebDeveloper>
<iisExpressSettings anonymousAuthentication="enabled" windowsAuthentication="disabled" useClassicPipelineMode="false"/>
</VisualWebDeveloper>

如果windowsAuthentication="enabled" 您仍然可以得到一个对话框,即使anonymousAuthentication="enabled":-)

于 2016-09-23T20:24:00.713 回答