我能够获得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 {..}
}
}
但是,当涉及ProcessRequest
的{{1}}方法时,HttpHandler
会引发CurrentSiteId
类型的例外:System.InvalidCastException
Null object cannot be converted to a value type.
决议是什么?
答案 0 :(得分:1)
如果传递路线值,您应该可以通过context
访问它:
Convert.ToInt16(context.Request.RequestContext.RouteData.Values["CurrentSiteId"]);
<强>更新强>
尝试以下方法:
public class MyHttpHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var siteId = Convert.ToInt16(context.Request.RequestContext.RouteData.Values["CurrentSiteId"]);
}
}
答案 1 :(得分:0)
在投射之前,您应该检查该值是否为空 可在此处找到一个好样本:In MVC3, how to get the current action name? (用你想要调用的方法替换动作)