问题标签 [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.
asp.net-core - 带有取消令牌的自定义 ASP.NET Core 中间件
我有一个自定义 ASP.NET Core 中间件,我想检索请求的取消令牌。
我试图将它添加到调用的签名中,如下所示:
但是一旦我添加它,它就不再被调用了。
我究竟做错了什么?
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 套接字请求......
这可能是服务器上的配置问题...
肖恩
c# - 在 ASP.NET Core 的中间件中注入服务
我想基于 HTTP 标头值注入服务。所以我有 2 个类 - DbDataProvider 和 InMemDataProvider,它们都是从 IDataProvider 实现的。每当进行 API 调用时,客户端都会传递一个标头,以确定是需要 DbDataProvider 还是需要 InMemDataProvider。我该如何做到这一点?所以简而言之,我需要在其中一个中间件的 ServiceCollection 中注入服务。那可能吗?
问题是在 Startup 类的 ConfigureService 方法中我无法获取 HttpContext。我已经编写了一个中间件,使用它可以获取 HTTP 上下文,但是如何在那里注入服务?
asp.net-core - 如何使用中间件删除服务器标头?
在 ASP.NET Core 1.0 中,每个响应都将包含 header Server: Kestrel
。我想删除此标头以及其他标头,例如X-Power-By
使用中间件。
我知道我们可以通过设置以下内容来删除主机配置中的 Kestrel 标头,但我想使用中间件来做到这一点(实际上,当我们有 Httpmodule 时,我们可以这样做,所以我正在学习同样的事情)。我尝试了一下它没有用。
试过的代码:
asp.net-core - 替换 ASP.NET Core 1.0 中间件中的响应流
我想在我的 ASP.NET Core 1.0 项目中编写自定义中间件,它将原始框架的 Http Response Stream 替换为我自己的,因此我将能够对其执行读/查找/写入操作(前 2 个在原始框架上是不可能的流)在进一步的代码中,即在动作或过滤器中。
我从以下代码开始:
以下代码的问题是,有时fullResponse
流在调用时已经关闭await responseStream.CopyToAsync(fullResponse);
,因此会引发异常无法访问已关闭的流。
当我在浏览器中加载页面然后在完全加载之前刷新时,这种奇怪的行为很容易观察到。
我想知道:
- 为什么会这样?
- 如何预防?
- 我的解决方案是个好主意还是有另一种方法来替换响应流?
asp.net-core - 如何在 ASP.NET Core 中实现条件 AutomaticChallenge?
如何将来自某个路径(网站)的请求重定向到登录页面,但以未经授权的方式响应来自另一个路径(API 路径)的请求?据我了解,AutomaticChallenge 会更改所有 Web 应用程序的这种行为。但是如何使它有条件呢?
我使用 OpenIddict,它是 OpenId Connect Server 配置库。而且,一般来说,客户端是移动应用程序。然而,对于一些返回视图的控制器来说,有一个类似网站的行为会很好。
启动代码如下所示:
asp.net-core - 如何为每个映射的 IApplicationBuilder 配置服务?
在 owin 中,我为映射的应用程序构建器配置了不同的服务,如下所示:
在 asp.net 核心中,我需要为每个映射的应用程序构建器配置服务,但所有注册的服务都应用于所有映射的应用程序构建器。我将为每个 appBuilder 配置服务。
c# - 配置 Simple Injector 以支持解析 ASP.NET Core 中间件依赖项?
如何配置 SimpleInjector 以解决 LogMiddleware 的 Invoke 方法依赖关系,例如 IMessageService ?
据我所知,Asp.net 核心使用 HttpContext.RequestServices (IServiceProvider) 来解决依赖关系,我将 SimpleInjector 容器设置为 HttpContext.RequestServices 属性但没有用。我想动态更改 ServiceProvider 因为每个租户都应该有一个容器。
asp.net - AuthorizeAttribute 重定向到访问被拒绝的页面,即使已记录
启动.cs:
MembershipController.cs
========
问题:
[Authorize]
属性不起作用。它重定向到拒绝访问页面。
但是 [Authorize(Roles = "Administrator")]
效果很好
注意: "User.Identity.IsAuthenticated"
即使我成功登录也总是错误的
asp.net-core - 如何有路线别名?
我寻找使用 ASP.NET Core 的别名创建路由系统。
在我的数据库中,我的所有路由都具有相应的别名,当用户请求服务器时,我的应用程序会查找与别名对应的路由。
现在,我想使用恢复的路由来访问正确的控制器和正确的操作。
一个例子将比长篇演讲更明确(我想做的是在括号中):
用户连接到 myapp.com/hello/i/am/an/alias -> 应用找到对应的路由,即 /MyController/Index(-> 应用使用 MyController 将 Index 视图发送给用户)
如果有人知道该怎么做,我会接受 :D 谢谢
编辑:实际上,最好是编辑 HttpContext,但我认为这是不可能的