C# 401未经授权的错误web api mvc windows身份验证

C# 401未经授权的错误web api mvc windows身份验证,c#,iis-7,asp.net-web-api,http-status-code-401,C#,Iis 7,Asp.net Web Api,Http Status Code 401,我有一个错误。我的web服务是用mvc编写的。在配置为使用windows身份验证的IIS中。 下面是fiddler的屏幕截图 当我从浏览器点击URL时,它会给我弹出窗口,输入用户名和密码。 如何避免弹出窗口 我正在从另一个窗口服务调用此web api。您可以将用户名和密码指定为URL的一部分: http://username:password@www.example.com/foo/bar/baz 注意:仅仅因为你可以,并不意味着你应该。虽然这可能是测试事物的临时解决方案,但我不建议在生产中

我有一个错误。我的web服务是用mvc编写的。在配置为使用windows身份验证的IIS中。 下面是fiddler的屏幕截图

当我从浏览器点击URL时,它会给我弹出窗口,输入用户名和密码。 如何避免弹出窗口


我正在从另一个窗口服务调用此web api。

您可以将用户名和密码指定为URL的一部分:

http://username:password@www.example.com/foo/bar/baz

注意:仅仅因为你可以,并不意味着你应该。虽然这可能是测试事物的临时解决方案,但我不建议在生产中这样做。在过去,我们就是这样做的。但正如@DiskJunky所指出的,“URL对几乎任何人/任何人都很容易看到”,其中包括您的浏览器历史记录、服务器日志,甚至可能更糟。

如果您使用的是WebClient,则需要设置凭据。您是如何从windows服务调用web api的?

我在web配置中添加了以下几行,以解决此问题,它成功了

   <security>
        <authorization>
            <add accessType="Allow" users="*" />
        </authorization>
    </security>

我怀疑这两个web服务可能托管在同一台服务器上。在这种情况下,问题可能是由环回检查引起的。为了进行测试,请尝试在不使用完全限定域名的情况下引用该服务,并查看其是否有效。如果是,请使用以下步骤指定本地计算机上的主机名

方法1:指定主机名(如果需要NTLM身份验证,首选方法)()

要指定映射到环回地址并可连接到计算机上网站的主机名,请执行以下步骤:

  • 将DisableStrictNameChecking注册表项设置为1。有关如何执行此操作的详细信息,请单击以下文章编号以查看Microsoft知识库中的文章:281308在基于Windows 2000的计算机或基于Windows Server 2003的计算机上连接到SMB共享可能无法使用别名
  • 单击开始,单击运行,键入regedit,然后单击确定
  • 在注册表编辑器中,找到并单击以下注册表项: HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1\U 0
  • 右键单击MSV1_0,指向“新建”,然后单击“多字符串值”
  • 键入BackConnectionHostNames,然后按ENTER键
  • 右键单击BackConnectionHostNames,然后单击修改
  • 在“值数据”框中,键入主机名或本地计算机上站点的主机名,然后单击“确定”
  • 退出注册表编辑器,然后重新启动IISAdmin服务

  • **编辑成答案的形式,包括引用链接的详细步骤

    我的2美分:在部署web应用程序时,我们在请求图像时遇到了一个HTTP 401问题。我们使用WiX作为打包和安装解决方案。 在这种特定情况下,安装程序没有打包映像,因此部署的实例上也不存在路径


    有人可能想知道,当一个404(未找到)被期待时,为什么会抛出一个401——我的理解是,由于我们的路径不是直接在根下,而是类似于root/content/images/image.png,并且我提出了匿名请求,我得到了一个401(未经授权)因为我没有浏览目录的权限。我通过在我的请求中添加一个授权头来确认这一点,然后正如预期的那样,我得到了一个404

    取消对您的网站的保护以修复本地化问题不是最好的主意,雪莉?我们应该在哪里添加这行内容?@Ashkan,理想情况下不应该这样做,但可以将其添加到
    Web.config
    @DiskJunky tnx的
    部分。我在windows中的文件夹权限中发现问题。我将IUser设置到我的文件夹并解决了问题。此更改将成功授权所有用户;因此,禁用您试图实现的任何安全性。如果这解决了您的问题,那么您应该使用“匿名身份验证”而不是“Windows身份验证”。我认为这是因为将密码放入URL是一个安全禁忌。URL对几乎任何人/任何人都很容易看到,而将密码放入其中……至少可以说是不明智的。