401未经授权的错误web api mvc windows身份validation

我收到401未经授权的错误。 我的网络服务是用mvc编写的。 在IIS中配置为使用Windows身份validation。 下面是小提琴手的截屏 在此处输入图像描述

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

我从另一个窗口服务调用这个web api。

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

方法1:指定主机名(如果需要NTLM身份validation,则为首选方法)http://support.microsoft.com/kb/896861

要指定映射到回送地址并可以连接到计算机上的网站的主机名,请按照下列步骤操作:

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

http://sofzh.miximages.com/c%23/ image.png,我做了一个匿名请求,我得到了401(未经授权),因为我没有访问权限浏览目录。 我通过在我的请求中添加Authorization标头来确认这一点,然后按预期我得到了404

您可以在URL中指定用户名和密码:

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

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

我在web配置中添加了下面的行以解决问题并且它有效。