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