标签: katana

如何用简单的词语和用法解释Katana和OWIN?

我读过很多关于OWIN和Katana项目的文章,但我无法全面了解它.

对于使用ASP.NET的普通Web开发人员:

  1. 究竟什么是OWIN以及它解决了什么问题(简单来说).它与IIS的关系是什么?
  2. OWIN取代了IIS吗?如果没有,OWIN在什么情况下最适合?
  3. OWIN如何帮助我完成日常工作?
  4. OWIN如何帮助我完成自我改善项目?

asp.net iis owin katana

332
推荐指数
4
解决办法
6万
查看次数

我什么时候应该使用OWIN Katana?

我是OWIN和Katana的新手.我真的不明白为什么我应该使用OWIN,而我可以使用IIS.为了简化,我的问题是:如果我跳过学习OWIN并在我的网站上使用IIS,我会失去什么?

我用谷歌搜索,但没有一个简单的解释.有一些信息,在这里,但他们使用的一些术语的短语,所以我无法理解这一点.

asp.net iis asp.net-mvc owin katana

268
推荐指数
4
解决办法
7万
查看次数

ASP.NET_SessionId + OWIN Cookies不会发送到浏览器

使用Owin cookie身份验证时遇到一个奇怪的问题.

当我启动我的IIS服务器时,身份验证在IE/Firefox和Chrome上运行得非常好.

我开始使用身份验证进行一些测试并在不同的平台上登录,我想出了一个奇怪的错误.偶尔Owin框架/ IIS只是不向浏览器发送任何cookie.我将输入一个用户名和密码,该代码运行正确,但根本没有cookie传递给浏览器.如果我重新启动服务器它开始工作,那么在某些时候我将尝试登录并再次cookie停止交付.单步执行代码不会做任何事情并且不会抛出任何错误.

 app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationMode = AuthenticationMode.Active,
            CookieHttpOnly = true,
            AuthenticationType = "ABC",
            LoginPath = new PathString("/Account/Login"),
            CookiePath = "/",
            CookieName = "ABC",
            Provider = new CookieAuthenticationProvider
               {
                  OnApplyRedirect = ctx =>
                  {
                     if (!IsAjaxRequest(ctx.Request))
                     {
                        ctx.Response.Redirect(ctx.RedirectUri);
                     }
                 }
               }
        });
Run Code Online (Sandbox Code Playgroud)

在我的登录程序中,我有以下代码:

IAuthenticationManager authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
                            authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);

var authentication = HttpContext.Current.GetOwinContext().Authentication;
var identity = new ClaimsIdentity("ABC");
identity.AddClaim(new Claim(ClaimTypes.Name, user.Username));
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.User_ID.ToString()));
identity.AddClaim(new Claim(ClaimTypes.Role, role.myRole.ToString()));
    authentication.AuthenticationResponseGrant =
        new AuthenticationResponseGrant(identity, new AuthenticationProperties()
                                                   {
                                                       IsPersistent = isPersistent
                                                   }); …
Run Code Online (Sandbox Code Playgroud)

asp.net owin katana asp.net-identity

136
推荐指数
5
解决办法
6万
查看次数

红隼和卡塔纳之间的区别

我的理解是,您目前可以使用Katana自行托管WebAPI,MVC将在未来版本中具备此功能.基本上Katana将是MVC和WebAPI都可以使用的托管选项.

Kestrel进入了这一局面,我看到一些MS员工在博客上发表了关于它在Linux上托管ASP.NET vNext的信息.

我的理解是Kestrel和Katana都实现了OWIN管道.

从那里它有点模糊.我问自己,为什么Kestrel进入了画面,当看起来Katana可以起到同样的作用,如果你用mono编译它并做了一些努力使它跨平台兼容(也许说起来容易做起来难).

Kestrel和Katana是否有同样的目的?或者是一个专门以某种方式而另一个不是?

Kestrel最终会成为Windows部署的可行选择吗?或者它是否适用于非Windows环境,而Katana仍然是Windows的选择?

我认识到,由于我对Katana/Kestrel缺乏了解,我可能会要求苹果与橘子进行比较,但如果答案是"橘子的酸味比苹果更多",那么IMO就是一个非常有效的答案.

asp.net asp.net-mvc owin katana

52
推荐指数
4
解决办法
1万
查看次数

Microsoft在OWIN实现中扩展方法CreatePerOwinContext的目的是什么

我是ASP.NET的新手,目前正在学习ASP.NET身份.我知道它建立在微软的OWIN实现之上,而且我也在学习它.所以,我在Owin启动代码中遇到了扩展方法CreatePerOwinContext,我没有看到使用它的明确目的.它是某种依赖注入容器吗?这个方法的真正目的是什么?在什么情况下应该应用它?

asp.net owin katana

49
推荐指数
2
解决办法
2万
查看次数

使用OAuthBearerTokens与UseOAuthBearerAuthentication

在我们的Startup课程中,我配置了以下auth服务器选项:

OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
    AllowInsecureHttp = true,
    TokenEndpointPath = new PathString("/api/v1/token"),
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
    Provider = new SimpleAuthorizationServerProvider()
};
Run Code Online (Sandbox Code Playgroud)

在此之后,我们应该使用哪个选项来实际启用承载身份验证?互联网上似乎有两种变体.

选项1:

app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
Run Code Online (Sandbox Code Playgroud)

选项2:

app.UseOAuthBearerTokens(OAuthServerOptions);
Run Code Online (Sandbox Code Playgroud)

我对它们进行了测试,结果是一样的.

这些选项有什么区别?我们什么时候应该使用哪个?

owin katana asp.net-identity asp.net-web-api2 asp.net-identity-2

49
推荐指数
1
解决办法
2万
查看次数

OWIN和Katana,为什么要将应用程序与服务器分离?

我不太明白...确定它能够自我托管一个应用程序很酷,它可能很好,因为如果IIS出于任何原因失败...那么你的所有网站都会崩溃..但如果它们是自我托管然后他们住在那里自己的生活在自己的背景..我猜这很好..但我仍然没有得到这个的优点..我在IIS管道中通过使用owin加速应用程序快速跳过很多不必要的东西,或者......实际的职业选手是什么?(你不需要列出所有这些,如果它们很多:),但我知道你为什么要在IIS上使用OWIN和Katana)

提前致谢!

asp.net iis owin katana

40
推荐指数
2
解决办法
9308
查看次数

Web API 2 OWIN Bearer令牌的目的是什么?

我试图了解MVC 5中单页应用程序模板中新的OWIN Bearer Token身份验证过程.如果我错了请更正我,对于OAuth密码客户端身份验证流程,承载令牌身份验证通过检查http授权请求标头来工作对于承载访问令牌代码,以查看请求是否经过身份验证,它不依赖cookie来检查特定请求是否经过身份验证.

根据这篇文章:

使用Web API示例进行OWIN承载令牌认证

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
    using (IdentityManager identityManager = _identityManagerFactory.CreateStoreManager())
    {
        if (!await identityManager.Passwords.CheckPasswordAsync(context.UserName, context.Password))
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }

        string userId = await identityManager.Logins.GetUserIdForLocalLoginAsync(context.UserName);
        IEnumerable<Claim> claims = await GetClaimsAsync(identityManager, userId);
        ClaimsIdentity oAuthIdentity = CreateIdentity(identityManager, claims,
            context.Options.AuthenticationType);
        ClaimsIdentity cookiesIdentity = CreateIdentity(identityManager, claims,
            _cookieOptions.AuthenticationType);
        AuthenticationProperties properties = await CreatePropertiesAsync(identityManager, userId);
        AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
        context.Validated(ticket);
        context.Request.Context.Authentication.SignIn(cookiesIdentity);
    }
}
Run Code Online (Sandbox Code Playgroud)

GrantReourceOwnerCredentials函数不仅使用以下行构成票证:context.Validated(ticket); 但它也组成了一个cookie标识,并使用以下行将其设置为cookie:context.Request.Context.Authentication.SignIn(cookiesIdentity);

所以我的问题是,这个函数中cookie的确切目的是什么?AuthenticationTicket不应该足够用于身份验证吗?

owin katana asp.net-mvc-5 asp.net-web-api2

36
推荐指数
1
解决办法
2万
查看次数

Owin的Global.asax有Application_End吗?

Startup.cs是一种初始化应用程序而不是Application_StartGlobal.asax 的新方法,它很好.但是有没有地方放置我的拆解逻辑,例如:

public class WebApiApplication : System.Web.HttpApplication
{
  protected void Application_End()
  {
    // Release you ServiceBroker listener
    SqlDependency.Stop(connString);
  }
}
Run Code Online (Sandbox Code Playgroud)

Microsoft.Owin命名空间中查找,但它似乎只有OwinStartupAttribute.这是否意味着应用程序生命周期事件仍由System.Web.HttpApplication实例处理,并且OWIN规范不支持?

.net asp.net asp.net-mvc owin katana

35
推荐指数
2
解决办法
4975
查看次数

OWIN/Katana未处理的异常全局处理程序?

在Katana(OWIN)实现中实现全局异常捕获器处理程序的正确方法是什么?

在作为Azure云服务(工作者角色)运行的自托管OWIN/Katana实现中,我将此代码放在中间件中:

throw new Exception("pooo");
Run Code Online (Sandbox Code Playgroud)

然后我将此代码放在Startup类Configuration方法中,在事件处理程序中设置断点:

 AppDomain.CurrentDomain.UnhandledException += 
    CurrentDomain_UnhandledExceptionEventHandler;
Run Code Online (Sandbox Code Playgroud)

和同一个类中的事件处理程序(在第一行设置断点):

private static void CurrentDomain_UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e)
{
    var exception = (Exception)e.ExceptionObject;
    Trace.WriteLine(exception.Message);
    Trace.WriteLine(exception.StackTrace);
    Trace.WriteLine(exception.InnerException.Message);
}
Run Code Online (Sandbox Code Playgroud)

代码运行时,不会触发断点.Visual Studio输出窗口确实包括此:

A first chance exception of type 'System.Exception' occurred in redacted.dll
A first chance exception of type 'System.Exception' occurred in mscorlib.dll
Run Code Online (Sandbox Code Playgroud)

我也尝试将连接和处理程序移动到Worker Role OnStart方法,但仍然没有命中断点.

我根本没有使用WebAPI,但确实查看过那里做的帖子,但我没有发现任何明确的内容,所以我在这里.

在.NET Framework 4.5.2,VS 2013上运行.

所有想法都赞赏.谢谢.

c# exception-handling asp.net-web-api owin katana

35
推荐指数
2
解决办法
2万
查看次数