0

我有一個簡單的登錄控制器,看起來像這樣:ASP.NET的WebAPI與MVC - 統一控制注射失敗的HTTPPOST

public class LoginController : Controller 
{ 
    private IAccountService _accountService = null; 
    private IFormsAuthenticationService _formsAuthenticationService = null; 

    public LoginController() {} 

    [InjectionConstructor] 
    public LoginController(IAccountService accountService, IFormsAuthenticationService formsAuthenticationService) 
    { 
     _accountService = accountService; 
     _formsAuthenticationService = formsAuthenticationService; 
    } 

    // 
    // GET: /Login/ 

    public ActionResult Index() 
    { 
     return View();   
    } 

    // 
    // POST: /Login/ 

    [HttpPost] 
    public ActionResult Index(Credentials credentials) 
    { 
     try 
     { 
      if (_accountService.ValidateUser(credentials) != null) 
      { 
       _formsAuthenticationService.SignIn(credentials.UserName, true); 
       return RedirectToAction("Index", "Home"); 
      } 
      else 
       return RedirectToAction("Index", new { failed = true }); 
     } 
     catch 
     { 
      throw; 
     } 
    } 
} 

本地,一切工作正常。但是,當我將應用程序放到我的Web服務器(共享主機,ASP.NET 4.0)上時,構造函數注入對GET正常工作,但不會爲POST啓動。

本質上對於POST來說,默認的構造函數會被激發而不是注入構造函數。我不確定Unity是否會踢POST動詞(我該如何測試?)。

我正在使用Boostrapper.cs,正如我所說的,在我的開發PC上一切正常,所以推測在Web服務器上有問題。我可能會更改一些服務器設置。有什麼建議麼?

乾杯 -

+0

爲什麼你有一個默認ctor無論如何?這是[壞事](http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=97)。 – Steven

回答

0

胡說了 - 看起來這個問題是由於我試圖加載DLL的EntityFramework的錯誤版本(V6,而不是4.1)。這沒有出現在堆棧跟蹤中,但是當我發現這個並替換了DLL後,再次開始工作。