首页 文章

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

提问于
浏览
5

我收到401未经授权的错误 . 我的网络服务是用mvc编写的 . 在IIS中配置为使用Windows身份验证 . 以下是小提琴手的屏幕截图
enter image description here

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

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

5 回答

  • 1

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

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

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

    Method 1: Specify host names (Preferred method if NTLM authentication is desired)http://support.microsoft.com/kb/896861

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

    • 将DisableStrictNameChecking注册表项设置为1.有关如何执行此操作的详细信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:281308在基于Windows 2000的计算机或Windows Server 2003上连接到SMB共享基于计算机的计算机可能无法使用别名

    • 单击“开始”,单击“运行”,键入regedit,然后单击“确定” .

    • 在注册表编辑器中,找到并单击以下注册表项:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0

    • 右键单击“MSV1_0”,指向“新建”,然后单击“多字符串值” .

    • 键入BackConnectionHostNames,然后按Enter .

    • 右键单击“BackConnectionHostNames”,然后单击“修改” .

    • 在“数值数据”框中,键入本地计算机上站点的主机名或主机名,然后单击“确定” .

    • 退出注册表编辑器,然后重新启动IISAdmin服务 .

    http://blogs.4ward.it/impersonation-issues-401-error-mvc-and-web-api-4-5/

    **编辑以答案的形式,并包括参考链接的详细步骤

  • 1

    如果您使用的是WebClient,则需要设置Credientials . 你是如何通过Windows服务调用web api的?

  • 3

    我的2美分:我遇到了在部署Web应用程序时请求图像时遇到HTTP 401困惑的情况 . 我们使用WiX作为我们的包装和安装解决方案 . 在这种特定情况下,安装程序未对映像进行打包,因此部署的实例上的路径也不存在 .

    有人可能想知道为什么当一个 404 (未找到)会被预料到时会抛出 401 - 我的理解是,因为我们的路径不是直接位于根目录下,而是类似root / content / images / image.png,我做了一个匿名请求,我有一个401(未经授权),因为我没有访问浏览目录 . 我通过在我的请求中添加Authorization标头来确认这一点,然后按预期我得到了 404 .

  • 4

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

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

    注意:仅仅因为你不能意味着你应该这样做 . 虽然这可以作为测试事物的临时解决方案,但我不建议在 生产环境 中这样做 . 在过去,这就是我们这样做的方式 . 但正如@DiskJunky指出的那样,"URLs are easily visible to pretty much anything/anyone"包括您的浏览器历史记录,服务器日志,甚至可能更糟 .

相关问题