最佳答案
我正在尝试实现这里看到的: 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;
}
}
为什么这个操作过滤器不触发任何内部事件?