无法将空对象转换为在 ProcessRequest 方法中引发的值类型异常
本文关键字:异常 类型 方法 ProcessRequest 对象 转换 | 更新日期: 2024-11-07 01:38:43
我能够获得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;
}
}
决议是什么?
您应该能够通过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"]);
}
}
您应该在强制转换之前检查该值是否不为 null可以在这里找到一个很好的例子:在 MVC3 中,如何获取当前操作名称?(将操作替换为要调用的方法)