ブログ アプリケーションに Pingback 自動検出を実装するために、すべての ASP MVC HTTP 応答ヘッダーをデフォルトで別の値に変更しようとしています。
デフォルトのヘッダー (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);
}
}
そして、コントローラーメソッドに属性を配置するだけです:
[HttpHeader("X-Pingback","http://localhost:4912/pingback/xmlrpcserver")]
public ActionResult Index()
{
var allArticles = _repository.GetPublishedArticles(SortOrder.desc);
return View(allArticles);
}
アプリを実行すると、次のエラーが表示されます。
何か案は?