gpt4 book ai didi

asp.net-mvc - 将 MVC API 与来自 VBA 的 Windows 身份验证一起使用

转载 作者:行者123 更新时间:2023-12-04 02:06:14 32 4
gpt4 key购买 nike

我开发了一个 MVC 应用程序,就这个问题而言,它只有一个 Controller :

Public Function GetValue()
Return User.Identity.Name
End Function

该应用程序将在 Intranet 网络上使用,因此,我已将其设置为“Windows 身份验证”

目的是通过 VBA 查询此应用程序。
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
With objHTTP
.Open "GET", URL, False
.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
.setRequestHeader "Content-type", "application/json"
.setRequestHeader "data-type", "json"
.send
.WaitForResponse
sResult = .ResponseText
End With
Debug.Print (sResult)

如果我在本地运行应用程序(即在运行 Excel 的计算机上调试),它可以通过 Chrome 运行(访问 localhost:xxxxx/api/name 会返回一个带有我的 ActiveDirectory 用户名的 xml 文件)。

VBA 例程也可以正常工作,输出窗口显示我在 Chrome 中获得的 XML。

现在,如果我将项目发布到 IIS 服务器,它仍然可以通过 Chrome 运行(访问 myserver/api/name 会返回一个带有我的 ActiveDirectory 用户名的 xml 文件)。
但是,当我运行 VBA 模块时,它返回错误 401:
Error:401 - Unauthorized: Access is denied due to invalid credentials.

它在浏览器中工作的事实让我相信服务器端配置是好的,我需要在我的 VBA 中调整一些东西。

我不得不承认我在这一点上有点不知所措......
谢谢你给我的任何线索:)

最佳答案

感谢@SWa 评论,我通过对函数稍作调整解决了这个问题:Switching to WinHttpRequest and using setAutoLogonPolicy 0

Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
With objHTTP
.Open "GET", URL, False
.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
.setRequestHeader "Content-type", "application/json"
.setRequestHeader "data-type", "json"
.setAutoLogonPolicy 0
.send
.WaitForResponse
sResult = .ResponseText
End With
Debug.Print (sResult)

关于asp.net-mvc - 将 MVC API 与来自 VBA 的 Windows 身份验证一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181720/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com