我公司开发的MVC应用程序,其中,对于这个问题的目的只有一个控制器:使用的MVC API使用Windows身份验证从VBA
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的计算机上),它是通过浏览器(访问本地主机:XXXXX/API /名返回的XML文件,我的ActiveDirectory用户名)。
VBA例程也正常工作,Output窗口显示我在Chrome中获得的XML。
现在,如果我将项目发布到IIS服务器,它仍然可以通过Chrome(通过访问myserver/api/name返回带有ActiveDirectory用户名的xml文件)工作。 然而,当我运行VBA模块,它返回一个错误401:
Error:401 - Unauthorized: Access is denied due to invalid credentials.
,它工作在浏览器使我相信,服务器端的配置是OK,那我需要调整的东西的事实我的VBA。
我不得不承认,我是一个有点无能在这一点上... 谢谢你的任何导致你可以给我:)
你应该使用'WinHTTPRequest.5.1'库,这将允许您调整身份验证设置允许您登录 – SWa