2015-05-29 50 views
0

我有一個關於Owin及其上下文的奇怪問題。我有一個控制器動作,看起來像這樣」在上下文中找不到任何owin.Environment項目。「當不在調試模式下

[HttpPost] 
public ActionResult Login(string username, string password) 
{ 
    var ctx = HttpContext.GetOwinContext(); 
    // code omitted 
    return new HttpUnauthorizedResult(); 
} 

如果我在var ctx設置斷點和調試應用程序變量獲取其值。但是,如果只是正常啓動應用程序,並使用IIS Express(ctrl + f5)運行應用程序,則會在var ctx處中斷並給出錯誤。

「在上下文中找不到owin.Environment項目。」

什麼原因導致此錯誤?

我在Visual Studio 2013,.Net版本4.5.1中運行這個。謝謝你的幫助!

如果您認爲您需要更多來自startup.cs或其他地方的代碼,請告訴我們。

編輯:這是我的啓動conf。

[assembly: OwinStartup(typeof(XXX.Startup))] 
namespace XXX 
{ 
    public partial class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      ConfigureAuth(app); 
     } 
    } 
} 

namespace XXX 
{ 
    public partial class Startup 
    { 
     public void ConfigureAuth(IAppBuilder app) 
     { 
      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = AuthenticationTypes.Cookie, 
       AuthenticationMode = AuthenticationMode.Active, 
       SlidingExpiration = true, 
       ExpireTimeSpan = new TimeSpan(0, 30, 0), 
      }); 

      app.UseMyAuthentication(new MyAuthenticationOptions() 
      { 
       AuthenticationType = AuthenticationTypes.MyAuthType, 
       SignInAsAuthenticationType = AuthenticationTypes.Cookie, 
       AuthenticationMode = AuthenticationMode.Passive, 
       CallbackPath = new PathString("/authorization/callback") 
      }); 

     } 
    } 
} 
+0

看看[this](http://stackoverflow.com/questions/18232549/no-owin-environment-item-was-found-in-the-context)線程。 –

+0

添加了一些配置。 @YuvalItzchakov,它找到啓動類,但是當不執行ctrl + f5時獲取上下文,它會引發異常,但不會在執行f5和通過getOwinContext方法進行調試時引發異常。 – Andreas

回答

0

看起來,你不能「註冊」 *啓動類不止一次,除去[assembly: OwinStartup(typeof(XXX.Startup))]使其註冊啓動類沒有調試時。仍然不明白爲什麼它在調試時工作。

*按照將StartUp類直接放在程序集下的慣例,owin反射代碼找到StartUp類。

相關問題