5
如何將會話添加到fakeContext?在C#MVC項目中添加會話以僞造httpContext
這個函數有我們建立的部分請求,其內容必須作爲字符串返回。 只有我們現在沒有部分請求中的會話。
,我不能像fakeContext.Session = HttpContext.Current.Session
有人建議將它們添加?
///<summary>
/// Invoke the partial request and return the result as a string.
///</summary>
///<param name="context">The controller context to use.</param>
///<returns>A string containing the result of the partial request.</returns>
public String InvokeAsString(ControllerContext context)
{
var stringBuilder = new StringBuilder();
//create memory writer used for httpresponse.
var memoryWriter = new StringWriter(stringBuilder);
//create a fake response
var fakeResponse = new HttpResponse(memoryWriter);
//create a fake context.
var fakeContext = new HttpContext(HttpContext.Current.Request, fakeResponse);
var oldPrincipal = context.HttpContext.User;
fakeContext.User = oldPrincipal;
//create a fake controllercontext to use for the default invoke action.
var fakeControllerContext = new ControllerContext(new HttpContextWrapper(fakeContext), context.RouteData, context.Controller);
var oldContext = HttpContext.Current;
HttpContext.Current = fakeContext;
ManagedWebSessionContext.Bind(
HttpContext.Current,
SessionManager.SessionFactory.OpenSession(new Interceptor()));
//perform the default invoke action.
Invoke(fakeControllerContext);
HttpContext.Current = oldContext;
//Flush memory and return output
memoryWriter.Flush();
var content = stringBuilder.ToString();
return content;
}