问题标签 [asp.net-core-middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4392 浏览

asp.net-core - 带有取消令牌的自定义 ASP.NET Core 中间件

我有一个自定义 ASP.NET Core 中间件,我想检索请求的取消令牌。

我试图将它添加到调用的签名中,如下所示:

但是一旦我添加它,它就不再被调用了。

我究竟做错了什么?

0 投票
0 回答
2007 浏览

asp.net - Websocket 托管在 ASPNET Core RC2 中,IIS “WebSocket 连接到 'wss://xxx' 失败:WebSocket 握手期间出错:意外响应代码:302

我有一个托管在ASPNET Core RC2中的Web 套接字服务器。它在我的本地开发盒上运行良好,仅在 kestrel 上运行时,以及当 kestrel 托管在 IIS 中时。当使用谷歌浏览器连接到 websocket 服务器时,它在本地盒子和远程盒子上都可以正常工作:

JavaScript:

但是,当 JavaScript 连接到托管在我们的构建机器(操作系统:Server 2008 R2)上的同一台服务器时,客户端会收到此302(重定向)错误:

WebSocket 连接到“wss://myBuildServer:8087/”失败:WebSocket 握手期间出错:意外响应代码:302

注意:当 JavaScript 在服务器本身的 Chrome 上运行时,错误是不同的:

WebSocket 连接到“wss://xxx:8087/”失败:WebSocket 打开握手被取消

添加 Web 套接字的 C# 源代码(Microsoft.AspNetCore.WebSockets.Server 0.1.0-rc2-final):

看起来该请求以某种方式被“损坏”,并且此 C# 行不将其识别为 Web 套接字请求,因此将其传递给 MVC:

版本:

  • 服务器操作系统:Windows 2008 R2

  • IIS 6.1 内部版本 7601 - SP1

  • IIS 管理器 7.5.7600.16385

  • 安装了 ASPNET Core 主机:DotNetCore.1.0.0.RC2-WindowsHosting.exe

我尝试了一些解决方法:

  • 使用http作为站点,使用ws://作为 Web 套接字 URL

  • 对站点使用https ,对 Web 套接字 URL使用wss://

  • ReplaceFeature选项添加到 websocket 服务器

有没有其他人看到过类似的问题?

我认为这与 IIS 作为 kestrel 的反向代理有关,也许在那台特定的机器上,代理正在搞乱 Web 套接字请求......

这可能是服务器上的配置问题...

肖恩

0 投票
3 回答
11488 浏览

c# - 在 ASP.NET Core 的中间件中注入服务

我想基于 HTTP 标头值注入服务。所以我有 2 个类 - DbDataProvider 和 InMemDataProvider,它们都是从 IDataProvider 实现的。每当进行 API 调用时,客户端都会传递一个标头,以确定是需要 DbDataProvider 还是需要 InMemDataProvider。我该如何做到这一点?所以简而言之,我需要在其中一个中间件的 ServiceCollection 中注入服务。那可能吗?

问题是在 Startup 类的 ConfigureService 方法中我无法获取 HttpContext。我已经编写了一个中间件,使用它可以获取 HTTP 上下文,但是如何在那里注入服务?

0 投票
1 回答
7178 浏览

asp.net-core - 如何使用中间件删除服务器标头?

在 ASP.NET Core 1.0 中,每个响应都将包含 header Server: Kestrel。我想删除此标头以及其他标头,例如X-Power-By使用中间件。

我知道我们可以通过设置以下内容来删除主机配置中的 Kestrel 标头,但我想使用中间件来做到这一点(实际上,当我们有 Httpmodule 时,我们可以这样做,所以我正在学习同样的事情)。我尝试了一下它没有用。

试过的代码:

0 投票
1 回答
2882 浏览

asp.net-core - 替换 ASP.NET Core 1.0 中间件中的响应流

我想在我的 ASP.NET Core 1.0 项目中编写自定义中间件,它将原始框架的 Http Response Stream 替换为我自己的,因此我将能够对其执行读/查找/写入操作(前 2 个在原始框架上是不可能的流)在进一步的代码中,即在动作或过滤器中。

我从以下代码开始:

以下代码的问题是,有时fullResponse流在调用时已经关闭await responseStream.CopyToAsync(fullResponse);,因此会引发异常无法访问已关闭的流。

当我在浏览器中加载页面然后在完全加载之前刷新时,这种奇怪的行为很容易观察到。

我想知道:

  1. 为什么会这样?
  2. 如何预防?
  3. 我的解决方案是个好主意还是有另一种方法来替换响应流?
0 投票
1 回答
1019 浏览

asp.net-core - 如何在 ASP.NET Core 中实现条件 AutomaticChallenge?

如何将来自某个路径(网站)的请求重定向到登录页面,但以未经授权的方式响应来自另一个路径(API 路径)的请求?据我了解,AutomaticChallenge 会更改所有 Web 应用程序的这种行为。但是如何使它有条件呢?

我使用 OpenIddict,它是 OpenId Connect Server 配置库。而且,一般来说,客户端是移动应用程序。然而,对于一些返回视图的控制器来说,有一个类似网站的行为会很好。

启动代码如下所示:

0 投票
0 回答
545 浏览

asp.net-core - 如何为每个映射的 IApplicationBuilder 配置服务?

在 owin 中,我为映射的应用程序构建器配置了不同的服务,如下所示:

在 asp.net 核心中,我需要为每个映射的应用程序构建器配置服务,但所有注册的服务都应用于所有映射的应用程序构建器。我将为每个 appBuilder 配置服务。

0 投票
2 回答
994 浏览

c# - 配置 Simple Injector 以支持解析 ASP.NET Core 中间件依赖项?

如何配置 SimpleInjector 以解决 LogMiddleware 的 Invoke 方法依赖关系,例如 IMessageService ?

据我所知,Asp.net 核心使用 HttpContext.RequestServices (IServiceProvider) 来解决依赖关系,我将 SimpleInjector 容器设置为 HttpContext.RequestServices 属性但没有用。我想动态更改 ServiceProvider 因为每个租户都应该有一个容器。

0 投票
1 回答
4537 浏览

asp.net - AuthorizeAttribute 重定向到访问被拒绝的页面,即使已记录

启动.cs:

MembershipController.cs

========

问题:

[Authorize]属性不起作用。它重定向到拒绝访问页面。

但是 [Authorize(Roles = "Administrator")]效果很好

注意: "User.Identity.IsAuthenticated"即使我成功登录也总是错误的

0 投票
2 回答
2462 浏览

asp.net-core - 如何有路线别名?

我寻找使用 ASP.NET Core 的别名创建路由系统。

在我的数据库中,我的所有路由都具有相应的别名,当用户请求服务器时,我的应用程序会查找与别名对应的路由。

现在,我想使用恢复的路由来访问正确的控制器和正确的操作。

一个例子将比长篇演讲更明确(我想做的是在括号中):

用户连接到 myapp.com/hello/i/am/an/alias -> 应用找到对应的路由,即 /MyController/Index(-> 应用使用 MyController 将 Index 视图发送给用户)

如果有人知道该怎么做,我会接受 :D 谢谢

编辑:实际上,最好是编辑 HttpContext,但我认为这是不可能的