我有一个假HttpContext我一直在尝试修改以包含一些用于测试目的的标头
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;
}
这可以在没有标题的情况下工作,但是当我在标题之间添加任何这些代码行时http请求 and 字符串编写器 lines.
httpRequest.Headers.Add("blah", "1234");
httpRequest.Headers["blah"] = "1234";
它抛出
发生“System.PlatformNotSupportedException”类型的异常
在 System.Web.dll 中,但未在用户代码中处理
- 为什么我会得到这个异常?
- 有没有可能的方法来添加标题HttpContext供测试用WebApi 控制器?