Asp.net mvc 4 自定义属性筛选器引发System.NullReferenceException
我正在使用以下工具从WebAPI实现动态文件下载 这里的关键是,它在自定义属性过滤器中设置一个cookie,该过滤器在文件生成完成后通知浏览器,然后删除加载消息,并将文件流式传输到浏览器 当我在本地测试时,这一切都可以正常工作,但当它部署到服务器时,我会得到System.NullReferenceException。错误指向属性过滤器-上面的链接有一个如何在ASP.NET MVC 3中执行此操作的示例,但我使用的是4,因此转换为-Asp.net mvc 4 自定义属性筛选器引发System.NullReferenceException,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,我正在使用以下工具从WebAPI实现动态文件下载 这里的关键是,它在自定义属性过滤器中设置一个cookie,该过滤器在文件生成完成后通知浏览器,然后删除加载消息,并将文件流式传输到浏览器 当我在本地测试时,这一切都可以正常工作,但当它部署到服务器时,我会得到System.NullReferenceException。错误指向属性过滤器-上面的链接有一个如何在ASP.NET MVC 3中执行此操作的示例,但我使用的是4,因此转换为- [AttributeUsage(AttributeTargets
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class FileDownloadAttribute : System.Web.Http.Filters.ActionFilterAttribute
{
public string CookieName { get; set; }
public string CookiePath { get; set; }
public FileDownloadAttribute(string cookieName = "fileDownload", string cookiePath = "/")
{
CookieName = cookieName;
CookiePath = cookiePath;
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
CheckAndHandleFileResult(actionExecutedContext);
base.OnActionExecuted(actionExecutedContext);
}
/// <summary>
/// Write a cookie to inform jquery.fileDownload that a successful file download has occured
/// </summary>
/// <param name="filterContext"></param>
private void CheckAndHandleFileResult(HttpActionExecutedContext filterContext)
{
List<CookieHeaderValue> cookies = new List<CookieHeaderValue>();
CookieHeaderValue cookie = new CookieHeaderValue(CookieName, "true"){ Path = CookiePath };
cookies.Add(cookie);
filterContext.Response.Headers.AddCookies(cookies);
}
}
编辑2-使用完整属性筛选器类更新哪一行是FileDownloadAttribute.cs的第28行?哪里初始化了
CookieName
和CookiePath
?您是否确实尝试过调试代码并检查空值?对于一个四行的方法来说不会太难。
CheckAndHandleFileResult(actionExecutedContext);