我有一个名为FakeHttpContext的对象,我一直在尝试修改它以便包含一些用于测试目的的头部信息。
这段代码在没有头部的情况下可以工作,但是当我在httpRequest和stringWriter之间添加任何这些代码行时。
public static HttpContext FakeHttpContext()
{
var httpRequest = new HttpRequest("", "http://stackoverflow/", "");
var stringWriter = new StringWriter();
var httpResponse = new HttpResponse(stringWriter);
var httpContext = new HttpContext(httpRequest, httpResponse);
var sessionContainer = new HttpSessionStateContainer("id", new SessionStateItemCollection(),
new HttpStaticObjectsCollection(), 10, true,
HttpCookieMode.AutoDetect,
SessionStateMode.InProc, false);
httpContext.Items["AspSession"] = typeof(HttpSessionState).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null, CallingConventions.Standard,
new[] { typeof(HttpSessionStateContainer) },
null)
.Invoke(new object[] { sessionContainer });
return httpContext;
}
这段代码在没有头部的情况下可以工作,但是当我在httpRequest和stringWriter之间添加任何这些代码行时。
httpRequest.Headers.Add("blah", "1234");
httpRequest.Headers["blah"] = "1234";
它抛出异常
发生了一个类型为 'System.PlatformNotSupportedException' 的异常,位于 System.Web.dll 中,但在用户代码中没有被处理
- 为什么会出现这个异常?
- 有没有可能在测试 WebApi 控制器时向 HttpContext 添加头信息?