我有一个从MS Access VBA模块调用的Web API(.Net MVC),如下所示:
objHTTP.Open "POST", "http://ourwebserver/api/run", False
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send (body) 'body is a string containing the parameters to be used
Debug.Print objHTTP.Status
Debug.Print objHTTP.responseText
好吧,我需要能够调试实际的api。所以,我将项目全部加载到我的本地机器上,但我不确定如何实际调试代码。
我到目前为止尝试的是运行项目,在控制器顶部设置断点,然后将objHTTP.Open
命令更改为指向已创建的localhost条目:
objHTTP.Open "POST", "http://localhost:54321/api/run", False
以及:
objHTTP.Open "POST", "http://localhost:54321/", False
...但是,在这两种情况下,断点都不会被击中。它失败了Status = 500
。
我也试过附加到调试器......但我不知道要将它附加到哪个。列表中没有w3wp.exe。我曾尝试将其附加到MSACCESS.exe和Chrome,但我没有成功。当我附加到MSACCESS.exe时,出现无法建立连接的错误。
基本上,我试图弄清楚如何告诉我的VBA进程调用我的本地API代码,以便我可以调试它。我很难搞清楚要实现这一目标的神奇话语。
编辑:对于记录,当我尝试运行项目(来自VS的F5)时,我在浏览器中获得以下RTE:
无法加载文件或程序集' Antlr3.Runtime'或其中一个 依赖。 API调用异常退出。 (HRESULT的例外情况: 0x800300FA(STG_E_ABNORMALAPIEXIT))
答案 0 :(得分:2)
搞清楚了!我之前在我的本地机器上运行过此解决方案,但忘记了让它运行所需的魔法。基本上,这个错误:
无法加载文件或程序集' Antlr3.Runtime'或其中一个 依赖。 API调用异常退出。 (HRESULT的例外情况: 0x800300FA(STG_E_ABNORMALAPIEXIT))
...是我的web.config文件中Identity Impersonate
为true
的结果。所以,我们这样做:
<identity impersonate="false" userName="dom\UserName" password="#########"/>
然后,我能够在没有错误的情况下将F5导入我的网络应用程序,并在VBA中使用此代码调用API:
objHTTP.Open "POST", "http://localhost:54321/api/run", False
我现在可以从Access调用API,点击断点并逐步完成!