Asp.net mvc 4 自定义属性筛选器引发System.NullReferenceException

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

我正在使用以下工具从WebAPI实现动态文件下载

这里的关键是,它在自定义属性过滤器中设置一个cookie,该过滤器在文件生成完成后通知浏览器,然后删除加载消息,并将文件流式传输到浏览器

当我在本地测试时,这一切都可以正常工作,但当它部署到服务器时,我会得到System.NullReferenceException。错误指向属性过滤器-上面的链接有一个如何在ASP.NET MVC 3中执行此操作的示例,但我使用的是4,因此转换为-

[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);