ログレスポンスを作成したいのですが、結果を取得できません。 LogResponseファイルにヒットできません。コード属性ファイルにヒットできません
私はファイル
public class LogResponse : ActionFilterAttribute
{
public LogResponse()
{
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
Log("OnActionExecuting", filterContext.RouteData);
Debug.WriteLine("TEST ");
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
Log("OnActionExecuted", filterContext.RouteData);
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
Log("OnResultExecuting", filterContext.RouteData);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
Log("OnResultExecuted", filterContext.RouteData);
}
private void Log(string methodName, RouteData routeData)
{
var controllerName = routeData.Values["controller"];
var actionName = routeData.Values["action"];
var message = String.Format("{0} controller:{1} action:{2}", methodName, controllerName, actionName);
System.IO.StreamWriter file = new System.IO.StreamWriter(@"F:\\test.txt");
file.WriteLine(message);
file.Close();
}
}
さて、私は次のようにホームコントローラを持っています:私は、デバッグポイントを維持する場合、私はそれがIndexメソッドを打つ見ることができ、
ここ[System.Web.Http.AllowAnonymous]
[LogResponse]
public class HomeController : ApiController
{
[System.Web.Http.HttpGet]
public string Index()
{
return "Test API";
}
}
、それをログレスポンス方式には当てられません。
私はこれを初めて使用しています。 私もルートを追加しました。そしてURLには、API/Home/Indexでヒットしました。
誰かが私のログ応答ファイルに当たっていない理由を教えてもらえますか?
あなたが試すかもしれない最初の事はにクラス名を変更することですLogResponseAttribute。名前の属性接尾辞はC#の魔法のビットです。 –
[このチュートリアル](http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs)を使用していますか?私は個人的にActionFiltersAttributeを使用していませんが、私が気付いたのは、あなたのメソッドタイプがActionResultとは対照的に文字列であることです。 – Arman
MVCやWebAPIで継承する必要があるかどうかによって、 'ActionFilterAttribute' MVCのための2つの異なる名前空間 'System.Web.Mvc'とAPIのための' System.Net.Http'のクラスから考えています。 – Luiso