Null对象无法转换为值类型异常会在ProcessRequest方法内抛出

时间:2015-03-10 08:48:20

标签: c# asp.net asp.net-mvc httphandler httpcontext

我能够获得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.

决议是什么?

2 个答案:

答案 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? (用你想要调用的方法替换动作)