45得票2回答
为什么ASP.NET Core中的中间件需要特定的语义而不是接口?

众所周知,ASP.NET Core中Startup类的Configure方法中的IApplicationBuilder需要特定的语义(具有输入参数为HttpContext类型并返回值为Task的'Invoke'方法)。但是为什么它没有实现为接口?我可以编写类似以下内容的代码:public cl...

39得票3回答
OWIN中间件的全局异常处理

我正在尝试在基于OWIN中间件(使用Owin.Host.SystemWeb的IIS HOST)构建的ASP.NET Web API 2.1项目中创建统一的错误处理/报告。 目前,我使用了一个自定义的异常记录器,它继承自System.Web.Http.ExceptionHandling.Exce...

36得票4回答
倒带请求正文流

我正在将一个请求记录器重新实现为Owin中间件,它会记录所有传入请求的请求URL和正文。我能够读取正文,但是如果这样做,我的控制器中的正文参数是null。 我猜测正文参数是null,是因为流的位置在结尾,所以在尝试反序列化正文时已经没有可读的内容了。在之前版本的Web API中我遇到过类似的...

34得票2回答
ASP.NET Core中间件还是OWIN中间件?

据我了解,ASP.NET Core除了具有自身本地中间件外,还支持OWIN中间件(通过app.UseOwin())。 ASP.NET Core中间件和OWIN中间件有何区别? 在设计新的中间件时,如何确定是将其设计为ASP.NET Core中间件还是OWIN中间件?

24得票1回答
如何安全地拦截自定义 Owin 中间件中的响应流?

我想编写一个简单的OWIN中间件,以拦截响应流。我的目标是用自定义基于Stream的类替换原始流,在其中拦截对响应流的写入。 然而,我遇到了一些问题,因为我无法知道内部中间件组件完全写入响应的时间。Stream的Dispose重写从未被调用。因此,我不知道何时执行我的处理,这应该发生在响应流...

21得票1回答
我应该使用OwinContext的环境来保存每个请求的应用程序特定数据吗?

我需要一种方法来存储每个请求的日志对象。使用HttpContext,我会将其添加到items字典中。如果可能的话,我不想将HttpContext引入其中。 下面的代码是我提出的Unity LifeTimeManager,它将对象存储在OwinContext的Environment属性中,我可以...

19得票2回答
中间件设置响应的ContentType

在我们基于ASP.NET Core的Web应用程序中,我们希望能够做到以下内容:对于某些请求的文件类型,在响应中应该获取自定义的ContentType。例如,.map 应该映射到 application/json。在“完整”的 ASP.NET 4.x 中,并结合 IIS,可以利用 web.co...

15得票4回答
如何使用Owin中间件拦截404错误页面

背景 首先让我解释一下背景。我正在开发一个项目,试图将一个使用OWIN配置的Web API后端服务器(现在托管在IIS上,但未来可能会使用其他支持OWIN的主机)与使用AngularJS的前端相结合。 AngularJS前端完全是静态内容。我完全避免使用服务器端技术,如MVC / Razo...

14得票3回答
OwinStartup类中的配置方法是如何和何时被调用/执行的?

在我提出问题之前,我已经阅读了以下帖子: 在将ASP.NET项目文件重命名后无法在IIS Express中运行OWIN启动类和问题中提到的所有帖子。 OWIN启动类检测 需要在web.config中添加OwinStartupAttribute以更正服务器错误#884 未检测到OWIN启动类...

10得票3回答
ASP.NET OWIN OpenID Connect无法创建用户身份验证

我有一个ASP.NET 4.6的web应用程序,我正在尝试使用OWIN添加OpenId Connect。 我添加了我的Owin启动类,一切似乎都配置正确,但是我遇到的问题是ASP Identity/Authenticated用户从未被创建。我最终陷入了无限循环中,其中OpenId回调页面重定...