我试图将我的所有 ASP MVC HTTP 响应标头更改为默认情况下具有另一个值,以便在我的博客应用程序中实现 Pingback 自动发现。
默认标题(在 Cassini 上)是:
Cache-Control private
Connection Close
Content-Length 20901
Content-Type text/html; charset=utf-8
Date Fri, 20 Apr 2012 22:46:11 GMT
Server ASP.NET Development Server/10.0.0.0
X-AspNet-Version 4.0.30319
X-AspNetMvc-Version 3.0
我想要一个额外的附加值:
X-Pingback: http://localhost:4912/pingback/xmlrpcserver
我用谷歌搜索了一下,找到了一个很好的解决方案: - 从ActionFilterAttribute派生并覆盖OnResultExecuted方法:
public class HttpHeaderAttribute : ActionFilterAttribute
{
public string Name { get; set; }
public string Value { get; set; }
public HttpHeaderAttribute(string name, string value)
{
Name = name;
Value = value;
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Request.Headers.Add(Name, Value);
base.OnResultExecuted(filterContext);
}
}
然后我简单地将属性放在我的 Controllers 方法上:
[HttpHeader("X-Pingback","http://localhost:4912/pingback/xmlrpcserver")]
public ActionResult Index()
{
var allArticles = _repository.GetPublishedArticles(SortOrder.desc);
return View(allArticles);
}
当我运行应用程序时,我收到以下错误:
有任何想法吗?