1. ホーム
  2. c#

ASP.NET Web API ActionFilterAttribute OnActionExecutingが起動しないのはなぜですか?

2023-10-05 17:43:06

質問

ここに書かれていることを実装しようとしています。 http://www.piotrwalat.net/nhibernate-session-management-in-asp-net-web-api/ を実装しようとしているのですが、私の NhSessionManagementAttribute .

ブレークポイントを設定したのは OnActionExecuting(HttpActionContext actionContext) にブレークポイントを設定し、この関数が呼び出されているかどうかを確認しました。

私はダブルチェックで global.asax.cs ファイル & を再確認しました。 ActionFilter を使っています。

GlobalConfiguration.Configuration.Filters.Add(new NhSessionManagementAttribute());

また、コントローラクラス自身とそのアクションの両方にこの属性を適用していますが、効果はありません。

public class ClientsController : ApiController {
    static readonly ClientRepository repository = new ClientRepository();

    [NhSessionManagement]
    public IEnumerable<Client> GetAllClients() {
        return repository.GetAll();
    }

    [NhSessionManagement]
    public Client GetClient(int id) {
        Client client = repository.Get(id);
        if (client == null) {
            throw new HttpResponseException(
                new HttpResponseMessage(HttpStatusCode.NotFound)
            );
        }
        return client;
    }
}

なぜこのアクションフィルターは、その中のどのイベントも発生させないのでしょうか?

どのように解決するのですか?

MVC と WebAPI の両方のアセンブリを含むプロジェクトで作業している場合、ActionFilterAttribute の名前空間が何であるかを確認できます。両方の下に 2 つの ActionFilterAttribute があるため、かなり混乱しています。

  • WebAPI。 System.Web.Http.Filters
  • MVC: システム.Web.Http.Mvc