我已经实现了一个 Web Api 类:
public class ControllerCore : ApiController
{
...do some basic things...
}
然后在派生类中有:
public class LoginController : ControllerCore
{
public HttpResponseMessage Get()
{
// Get login status
}
public HttpResponseMessage Post([FromBody]LoginParams login)
{
// Do actual log in
}
}
这一切都很好。但我想让ControllerCore 一次性使用,这样我就可以创建和清理一个包含开放数据库连接的托管对象:
public class ControllerCore : ApiController, IDisposable
{
protected DataAccess DAL;
private bool isDalDisposed;
public ControllerCore()
: base()
{
DAL = new DataAccess(); // opens a connection that will have to be cleaned up
isDalDisposed = false;
}
public new void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected override void Dispose(bool disposing)
{
if (!isDalDisposed)
{
isDalDisposed = true;
if (disposing)
DAL.Dispose();
}
base.Dispose(disposing);
}
...other code here...
}
问题是,虽然 LoginController 上的“Get”仍然有效,但“Post”永远不会被调用 - 路由似乎不起作用。由于唯一的区别是 Post 有参数,我想知道 Disposable 修改是否会以某种方式破坏从 JSON 到 LoginParams 对象的转换。
任何帮助将不胜感激!