"在上下文中找不到owin.Environment项目。"不在调试模式时

时间:2015-05-29 09:17:14

标签: c# asp.net-mvc owin katana

我对Owin及其背景有一个奇怪的问题。我有一个看起来像这样的控制器动作

[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或其他任何地方的更多代码,请告诉我。

编辑:这是我的创业公司。

[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")
            });

        }
    }
}

1 个答案:

答案 0 :(得分:0)

看起来你不能多次注册" *启动类,删除[assembly: OwinStartup(typeof(XXX.Startup))]使它在不调试时注册启动类。但是,在调试时仍然不明白为什么它会起作用。

*通过遵循将StartUp类直接放在程序集下的惯例,owin反射代码找到了StartUp类。