Tag: owin

请求/响应记录的响应正文

我正在尝试编写一个Owin midleware组件,它将记录每个传入的请求和对数据库的响应。 这是我设法得到多远。 我被困在阅读回复。 说: Stream不支持阅读。 我如何阅读Response.Body? public class LoggingMiddleware : OwinMiddleware { private static Logger log = LogManager.GetLogger(“WebApi”); public LoggingMiddleware(OwinMiddleware next, IAppBuilder app) : base(next) { } public override async Task Invoke(IOwinContext context) { using (var db = new HermesEntities()) { var sw = new Stopwatch(); sw.Start(); var logRequest = new log_Request { Body […]

将逻辑调用上下文从OWIN管道传递到WebApi控制器

我正在尝试根据Stephen Cleary的post传递关于逻辑调用上下文的上下文信息(使用CallContext.LogicalSetData(CallContextKey, value) ) http://blog.stephencleary.com/2013/04/implicit-async-context-asynclocal .html ; 并受到https://github.com/neuecc/OwinRequestScopeContext中代码的启发。 该值将在OWIN管道中可用,但在呼叫进入WebApi控制器时不可用,该值未设置。 我还注意到在控制器中设置断点时,我看不到调用堆栈中的OWIN管道。 显然,ASP.NET正在单独的调用上下文中进行控制器调用。 所以, 为什么(以及如何)ASP.NET将调用上下文从OWIN管道隔离到WebApi控制器? 如何将上下文数据从Pipeline传递到控制器?

如何在ASP.NET 5中使用基于IAppBuilder的Owin中间件

ASP.NET 5(aspnet vnext)是基于OWIN的,像Katana一样,但有不同的抽象。 值得注意的是, IAppBuilder已被IApplicationBuilder取代。 许多中间件库依赖于IAppBuilder并且尚未更新以支持ASP.NET 5 如何在APS.NET 5中间件中使用此OWIN中间件。 两者都是基于OWIN的,所以它应该是可能的。 Microsoft.AspNet.Builder.OwinExtensions确实提供了UseOwin方法,但它基于低级OWIN签名,因此不能与期望IAppBuilder方法一起使用。

如何将OnAuthenticated事件中的信息传递给控制器​​和SignIn?

正如我在这里发现的那样 ,我无法打电话 HttpContext.GetOwinContext().Authentication.SignIn(…) 在FacebookAuthenticationProvider OnAuthenticated事件。 这似乎是一个不同的背景。 我的用户将来自Facebook,这意味着我将需要检索id , email等数据……这些信息可以通过OnAuthenticated事件访问,我需要这些信息才能登录。 我需要在我的控制器上访问这些信息…… 我在活动中试过这个: context.OwinContext.Set(“FacebookUser”, rawUserObjectFromFacebookAsJson); 但是在控制器上如果我尝试检索它,它就是null。 var fbuser = HttpContext.GetOwinContext() .Get(“FacebookUser”); 所以我的问题是,如何将这些数据传递给控制器​​,以便我可以登录?

如何在使用OWIN的WebApi项目上启用Application Insights服务器遥测?

我们遇到了一堆问题(读取很长的响应时间)以及生产中的几个项目,并希望确切地看到服务器上发生了什么。 然后,我按照本文继续将Application Insights添加到我们的所有项目中。 问题是我们的两个WebAPI项目都没有将服务器数据发送到Azure门户,而所有其他项目(MVC 5)都是。 这是我在Azure上访问相应的Application Insights刀片时显示的内容: 我尝试在Azure VM中的Application Insights状态监视器中禁用并重新启用数据收集,在向API发出请求时重启IIS几次,但无济于事。 当我在MVC项目上启用它时,当我打开网站上的页面时,我几乎可以立即在Azure门户上看到数据。 当我看到我们的Azure VM没有为这些特定项目发送数据时,我尝试在我们的开发环境中设置相同的集合,该环境托管在我们自己的基础架构中,并且完全相同的情况重复出现,排除了可能性这与Azure VM中托管的项目有关。 我不确定是什么阻止这些项目向Azure发送数据,但通过查看工作项目与非工作项目,我认为它可能与我们的WebAPI项目使用新的OWIN这一事实有关管道虽然MVC是标准的MVC项目。 我检查了两个项目类型的web.config文件和bin文件夹,它们似乎被Insights Monitor正确修改(我可以看到添加到bin文件夹的相同新dll和添加到Web的相同http模块。配置)。 考虑到这一点,如何使用依赖于OWIN / Katana管道的WebAPI项目的Application Insights启用服务器端遥测? 在这种情况下,我该怎么做才能找出导致项目无法向Azure发送数据的确切原因?

ASP.NET Web API和OpenID Connect:如何从授权代码获取访问令牌

我尝试让OpenID Connect运行…我的Web API用户设法获得OpenID Connect Provider的授权码。 我应该如何将此代码传递给我的ASP.NET Web API? 我如何配置OWIN中间件,以便我可以使用授权码获取访问令牌? 更新:SPA使用AJAX与我的Web服务(ASP.NET Web API)进行通信。 在我的Web服务中使用OWIN Middleware。 我将OpenIDConnect设置为身份validation机制。 首次调用Web服务时,它成功将用户重定向到OpenID Connect Provider的登录页面。 用户可以登录并获得授权码。 AFAIK此代码现在可以(通过我的Web服务)用于访问令牌。 但是,我不知道如何将此代码返回到我的Web服务(这是使用标头完成吗?)然后配置什么来获取访问令牌。 我想我可以手动调用令牌端点,但我想利用OWIN组件。

OWIN为多个路由发送静态文件

我正在制作一个位于ASP.Net WebAPI之上的SPA。 我正在等待使用HTML5历史而不是#/用于历史路由但是这会给深度链接带来问题,我需要确保/和/foo/bar都返回相同的HTML文件(我的JS将呈现正确的部分SPA)。 如何让OWIN / Katana为多个不同的url返回相同的HTML文件?

在Asp.Net Identtity中使用UserStore和UserManager有什么区别?

我对Asp.Net Identity非常新,如果这个问题看起来很愚蠢,请耐心等待。 因此,当我在Microsoft网站上阅读下面链接中的UserStore类和UserManager类的定义时,看起来这两个类都定义了围绕用户的操作(如添加,查找,删除和修改)。 那我什么时候用一个呢? https://msdn.microsoft.com/en-us/library/dn315446(v=vs.108).aspx https://msdn.microsoft.com/en-us/library/dn613290(v=vs.108)的.aspx

没有Owin的Asp.Net MVC 5?

Mvc 5似乎依赖于Owin,如果你想自己托管或在Mac上运行,那就太棒了。 但是我们假设我只想在IIS下运行,就像以前的版本一样,我对Owin提供的东西不感兴趣。 默认的“空白”mvc5模板使用owin和其他15个依赖项。 我已经尝试逐个删除软件包,但似乎网站不知道如何在不使用Owin的属性的情况下启动。 那么,如何在没有Owin的iis下获得ASP.net,mvc 5?

OWIN中IIS主机的默认OAuth AccessTokenFormat实现是什么?

Web API 2 OWIN承载令牌认证 – AccessTokenFormat null? 默认/令牌端点工作正常,我可以从那里获得令牌,但我需要在票证上使用AccessTokenFormat.Protect方法为externalLogin生成accessToken。 基本上我的实现与这个实现几乎相同,我遇到了同样的问题,即AccessTokenFormat为null。 从文档中说: 用于保护访问令牌中包含的信息的数据格式。 如果应用程序未提供,则默认数据保护提供程序依赖于主机服务器。 IIS上的SystemWeb主机将使用ASP.NET机器密钥数据保护,而HttpListener和其他自托管服务器将使用DPAPI数据保护。 如果分配了不同的访问令牌提供程序或格式,则必须将兼容的实例分配给资源服务器的OAuthBearerAuthenticationOptions.AccessTokenProvider或OAuthBearerAuthenticationOptions.AccessTokenFormat属性。 在我看来,如果未分配AccessTokenFormat,主机将为其提供基本实现。 但我认为它不适用于此。 有没有办法找到ISecureDataFormatAccessTokenFormat的默认实现并手动将其分配给变量? 或者有没有人有其他想法如何解决这个问题? 更新:我获取katana的源代码并找到OAuthAuthorizationServerMiddleware类,从源代码我可以看到以下代码: if (Options.AccessTokenFormat == null) { IDataProtector dataProtecter = app.CreateDataProtector( typeof(OAuthAuthorizationServerMiddleware).Namespace, “Access_Token”, “v1”); Options.AccessTokenFormat = new TicketDataFormat(dataProtecter); } 在我的Startup.Auth中,这是我的代码: static Startup() { PublicClientId = “self”; UserManagerFactory = () => new UserManager(new UserStore(new ApplicationDbContext())); OAuthOptions = new OAuthAuthorizationServerOptions() […]