【发布时间】:2015-07-16 12:38:37
【问题描述】:
好的,我的情况要复杂得多,但是有一种简单的方法可以重现。从一个全新的 ASP.NET MVC 4 Web 应用程序 项目开始并选择 Web API 作为模板,我只需将第二个 mvc 操作添加到需要在内部调用 Web API 的 HomeController。
public async Task<string> TestAPI()
{
HttpServer server = new HttpServer(GlobalConfiguration.Configuration);
using (HttpMessageInvoker messageInvoker = new HttpMessageInvoker(server, false))
{
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:58233/api/values");
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = messageInvoker.SendAsync(request, new CancellationToken()).Result;
return await response.Content.ReadAsStringAsync();
}
//server.Dispose(); - if I do that on the second request I get a "Cannot access a disposed object." exception
}
那件事只在第一个请求时有效。在随后的请求中,它会抛出
“DelegatingHandler”列表无效,因为该属性 “RequestMessageHandlerTracer”的“InnerHandler”不为空。范围 名称:处理程序
我真的需要在这里使用 GlobalConfiguration.Configuration,因为我的系统非常模块化/基于插件,这使得在操作方法(或其他任何地方)中重建该配置非常困难。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-web-api