【发布时间】:2015-03-10 08:48:19
【问题描述】:
我能够获得 CurrentSideId,我可以通过应用程序在任何地方说。我有一个名为 MainClass 的类。它具有静态 CurrentSideId 属性。 MainClass.CurrentSiteId 返回请求的 SiteId。
public class MainClass{
public static int CurrentSiteId
{
get { return HttpContext.Current.Request.RequestContext.RouteData.Values["CurrentSiteId"].To<int>(); }
set {..}
}
}
但是,当涉及到HttpHandler 的ProcessRequest 方法时,CurrentSiteId 会抛出System.InvalidCastException 类型的异常:Null object cannot be converted to a value type.
public class MyRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new MyHttpHandler();
}
}
public class MyHttpHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var siteId = MainClass.CurrentSiteId;
}
}
解决办法是什么?
【问题讨论】:
-
错误信息有什么不清楚的地方?
Values返回null,因为密钥不存在,因此它返回null,您尝试将其转换为int。 -
那么我怎样才能在 HttpHandler 中获取 siteid 呢?
标签: c# asp.net asp.net-mvc httphandler httpcontext