這是論壇上發佈的ASP.NET - Enabling Session,它顯示瞭如何使用PostAuthorizeRequest方法爲WebApi調用啓用會話狀態。我已經在Global.asax文件的修改下面包含了代碼段供您參考。
private const string _WebApiPrefix = "api";
private static string _WebApiExecutionPath = String.Format("~/{0}", _WebApiPrefix);
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: String.Format("{0}/{{controller}}/{{id}}", _WebApiPrefix),
defaults: new { id = RouteParameter.Optional }
);
}
protected void Application_PostAuthorizeRequest()
{
if (IsWebApiRequest())
{
HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
}
}
private static bool IsWebApiRequest()
{
return HttpContext.Current.Request
.AppRelativeCurrentExecutionFilePath.StartsWith(_WebApiExecutionPath);
}
看起來像這樣應該可以解決你的問題。
確實這樣做了。謝謝你的提示! – GGleGrand 2012-07-19 07:34:28