我收到401未经授权的错误。我的网络服务是用mvc编写的。在IIS中配置为使用Windows身份验证。 下面是小提琴手的截屏
当我从浏览器点击URL时,它会弹出窗口输入用户名和密码。 如何避免弹出窗口?
我从另一个窗口服务调用此web api。
答案 0 :(得分:4)
我怀疑这两个Web服务可能托管在同一台服务器上。在这种情况下,问题可能是由环回检查引起的。要进行测试,请尝试引用该服务,而不使用完全限定的域名,看看它是否有效。如果是,请使用以下步骤指定本地计算机上的主机名。
方法1:指定主机名(如果需要NTLM身份验证,则为首选方法)(http://support.microsoft.com/kb/896861)
要指定映射到环回地址并可以连接到计算机上的网站的主机名,请按照下列步骤操作:
http://blogs.4ward.it/impersonation-issues-401-error-mvc-and-web-api-4-5/
**编辑以答案的形式,并包含参考链接的详细步骤
答案 1 :(得分:3)
如果您使用的是WebClient,则需要设置凭据。你是如何通过Windows服务调用web api的?
答案 2 :(得分:1)
您可以在网址中指定用户名和密码:
http://username:password@www.example.com/foo/bar/baz
注意:仅仅因为你可以并不意味着应该。虽然这可以作为测试事物的临时解决方案,但我不建议在生产中这样做。在过去,这就是我们这样做的方式。但正如@DiskJunky所指出的那样,“几乎任何人/任何人都可以看到URL”,其中包括您的浏览器历史记录,服务器日志,甚至可能更糟糕。
答案 3 :(得分:1)
我的2美分:我遇到了在部署Web应用程序时请求图像时遇到HTTP 401困惑的情况。我们使用WiX作为我们的包装和安装解决方案。 在这种特定情况下,安装程序未对映像进行打包,因此部署的实例上的路径也不存在。
有人可能想知道为什么在强烈要求 404 (未找到)时会抛出 401 - 我的理解是因为我们的路径不是直接位于根目录下但是像root / content / images / image.png这样的东西,我发了一个匿名请求,我得到了401(未经授权),因为我没有浏览目录的权限。我通过在我的请求中添加了Authorization标头来确认这一点,然后按预期我得到了 404 。
答案 4 :(得分:-2)
我在网络配置中添加了以下行来修复问题,但它确实有效。
<security>
<authorization>
<add accessType="Allow" users="*" />
</authorization>
</security>