【发布时间】:2017-04-03 10:03:19
【问题描述】:
我开发了一个 MVC 应用程序,就这个问题而言,它只有一个控制器:
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 中进行一些调整。
我不得不承认我在这一点上有点无能为力...... 谢谢你给我的任何线索:)
【问题讨论】:
-
您应该使用
WinHTTPRequest.5.1库,这将允许您调整身份验证设置以允许您登录
标签: asp.net-mvc vba windows-authentication