问题标签 [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 投票
0 回答
59 浏览

razor - 在 ASP.NET Core 中,我想在 Razor 完成后更新生成的 HTML

剃刀引擎处理完我的 HTML 后,我想获取该 HTML 并在结束标记后添加一些文本。我想我可以在服务的某个地方做到这一点,但不知道在哪里。

0 投票
1 回答
2187 浏览

asp.net-core - 希望 ASP.NET Core 中间件在 MVC Razor 视图引擎之后运行

在 MVC Razor 视图引擎处理数据后,我希望在 ASP.NET Core 中运行 MiddleWare 模块。我可以让它运行,但它似乎没有收集到所有数据。我有一个更新 DI 对象集合的 Tag Helper,但是当中间件运行时,DI 对象的集合是空的。我的 startup.cs 看起来像这样:

我的中间件是这样的:

我确实得到了我想要的 HTML,但我的 DI 中的集合似乎没有得到更新。

*** 注释 - 可能但不工作的结果过滤器

0 投票
0 回答
144 浏览

asp.net-core - 需要帮助使用操作结果筛选器从 ASP.NET Core 中的 Razor 视图中获取 HTML

我正在关注 Steve Smith 关于如何在 ASP.NET Core 中使用过滤器的文章。具体来说,我想在 razor 视图引擎处理后获取 HTML。我创建了一个动作过滤器并按如下方式装饰了我的控制器,但我仍然从流中得到一个空的 html 字符串。我认为这与使用 Result 而不是 Context 有关,但我不确定。这是我的代码:

0 投票
2 回答
3533 浏览

asp.net-core - 在以下可用的中间件中定义一个变量

我正在使用 asp.net 核心,我想在调用完整的网络应用程序之前从请求中获取一些数据。

所以我创建了一个中间件来做到这一点。我找到了一种方法来检查我想要的一切,但我不知道如何将变量传递给以下中间件

有没有一种将数据从中间件传递给其他人的好方法?(我在这里使用app.Run,但我想在 MVC 中拥有所有这些)

0 投票
2 回答
1847 浏览

asp.net-core - 将信息从控制器传递到中间件

我在我的 asp.net 核心应用程序中设置了一个中间件,以自动将控制器操作包装在事务中。

但是,我有一个不应该在事务中运行的控制器方法(将来可能会更多)。让控制器操作“退出”中间件功能的最佳方法是什么?

在控制器方法上放置像 [NoTransaction] 这样的自定义属性会很好。但是,我无法确定是否有任何方法可以从我的中间件的 Invoke() 方法中确定将调用哪个控制器操作(这将使我能够从该方法中提取属性并确定是否创建事务.) 正确的方法是什么?

0 投票
1 回答
797 浏览

azure - 如何为 Azure 移动应用身份验证获取和使用正确的签名密钥?

我正在使用更新Azure Mobile Apps的身份验证提供商(如 Google、Microsoft、Twitter 和 Facebook)来对我的网站的用户进行身份验证。所有这些都运行良好,并且在使用我的Azure Mobile App实例进行身份验证后,我会返回一个JWT代表经过身份验证的用户的有效令牌。这个令牌我正在转身并作为Authentication Bearer令牌发送到服务器以验证对另一个ASP.NET CoreAPI 服务的请求。所有这些都工作得很好。

问题是JWT使用正确的signing key值在服务器上进行验证。进行测试 - 如果我将我的JWT令牌带到https://jwt.io/ Azure使用正确的算法粘贴我的密钥,HS256我仍然无法通过“无效签名”错误。在同一区域,如果我调用ASP.NET Core API已配置的服务,我会app.UseJwtBearerAuthenticationMicrosoft.AspNetCore.Authentication.JwtBearer端点返回相同的 401 错误,说明如下:

401 Unauthorized: Bearer error="invalid_token", error_description="签名无效"

根据Azure 移动应用程序离线 WEBSITE_AUTH_SIGNING_KEY和其他一些网站,我应该使用WEBSITE_AUTH_SIGNING_KEYhttps ://[Azure-Mobile-Site-Here].scm.azurewebsites.net/Env.cshtml我已经获得了价值并尝试从周日开始使用它作为IssuerSigningKey服务器上的 10 种方式,但均未成功。我总是得到同样的错误。

这是我在服务器上的配置。我试图尽可能缩小范围,反编译代码并只打开最小标志来验证。我什么都搞不定。

如上所述,我已经尝试过ValidateIssuerSigningKey = false尝试绕过这一切,但没有成功。我仍然遇到同样的错误;就好像那个位对结果没有影响一样。

在这一点上,我感到迷茫和猜测,因为我什至不确定这WEBSITE_AUTH_SIGNING_KEY是正确的signingKey,如果不是,我就白费力气了。

secret / signing key为实例生成JWT令牌的正确方法是什么?Azure Mobile App如何正确地将其合并到服务器上的中间件配置中以验证令牌?

0 投票
0 回答
304 浏览

asp.net-core - 在 Middlewear 中使用 GzipCompressionProviderOptions,Bearer 未通过身份验证

我试着用

在服务中间件中,并得到错误消息:

“Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware:信息:承载未通过身份验证。失败消息:没有可用于令牌的 SecurityTokenValidator:未定义。”

这是我在 Middlewware 中的配置:

并在配置中:

如果我删除配置,那么注册承载将被管理并创建。有谁知道为什么会发生这种情况。谢谢。

更新 :

这是我在中间件 ConfigureService 中的配置 JWtBearer :

0 投票
1 回答
4447 浏览

angular - 如何让 CORS 与 ASP.Net Core Web API 服务器 Angular 2 客户端一起使用

我已经阅读了我能找到的关于 ASP.NET Core 和 CORS 的所有内容,并且我相信我了解其中的大部分内容,但是,如果我能让它工作,我会被诅咒的。我用的是Chrome浏览器,数据如下:

预检:

邮政:

ASP.NET 核心代码:

ASP.NET 核心控制器:

这是角代码:

我在浏览器控制台中遇到的确切错误是:

请注意,我从 POST 请求中收到 500 错误。如果出现 CORS 问题,这似乎不是服务器会发送的错误。我认为这是另外一回事,但是,所有这些代码都在单个域中工作,现在它是 CORS,有些事情正在变得混乱。无论如何,我已经阅读了我能找到的所有内容,但没有任何效果。我在想它可能与 WebAPI 路由有关。

谢谢你提供的所有帮助!

0 投票
0 回答
1006 浏览

asp.net-core - Service Fabric 上带有 CORS 的 Asp.net Core API 100% CPU 瓶颈

我在 Service Fabric 上作为无状态服务托管的 .Net Framework 4.5.2 上有一个ASP.net Core

API 是香草 API,为空

这是我的启动代码

这是 OpenAsync 方法:

一切都简单明了,没有自定义。CORS 调用有效,一切都很完美。我使用 Visual Studio Team Services 和15K users load进行了测试,这一切都像一个魅力一样,具有 14K RPS。顺便说一下,我认为 VS 的负载测试不使用 CORS 中间件。

现在的问题是,当我将这个完全空的 API投入生产,同时接收来自大约100 个用户的调用时,CPU 会在 3 分钟内跃升至 100%。呼叫被应答,直到 CPU 达到 100%,然后开始发回错误。似乎有 15000 个用户并且没有 CORS 一切正常,并且有 100 个用户 + CORS 不起作用,CPU 达到 100% 并保持这种状态,直到我重新启动 VM Scale set。

中央处理器

如果我停止发送调用,5 个节点的 CPU 保持稳定在 99%,没有收到任何单个调用。

这怎么可能? 我尝试了一切,项目简单明了,VS 负载测试有效,只有当我将它放在来自不同站点和不同 IP 地址的真实 CORS 调用上时才会发生这种情况。

在向服务器发送流量之前,我在服务器中进行了性能跟踪,再次使用 Visual Studio 的负载测试,完全使用 CORS 标头,一切都非常快。

对于真实世界的调用,这是我在分析器中看到的:

痕迹

除了 CORS 中间件和常用的 Kestrel 进程之外,什么都没有。无状态服务占用了 99% 的 CPU,即使我停止了流量,它也会保留它。

这是另一个 30 秒的跟踪,没有流量,但 CPU 为 90%

在此处输入图像描述

我不知道还能做什么,CORS 有问题,我敢肯定,即使它有效,但不知何故出了问题。

这是一个正确服务的 CORS 调用。

科尔斯电话

Asp.net Core CORS 中间件中是否存在错误?

更新:

我尝试了许多组合来隔离问题:

  1. 新集群,相同的 Asp.net Core vanilla 服务=> 问题仍然存在

  2. 相同的集群新项目相同的 Asp.net Core vanilla 服务=> 问题仍然存在

  3. 相同的集群 WebAPI OWIN 服务,相同的代码 =>问题消失了!

使用具有超过 50 个并发请求的 CORS 的 Service Fabric 上的 Asp.Net Core 会出现问题。

这是带有使用 Visual Studio 模板、OWIN 和 CORS 的 Asp.Net 无状态服务的 CPU (0.85%),具有大约 100 个并发连接和上面相同的空 Web API

欧文

在这一点上,我需要 Microsoft 官方来源的帮助来解决这个问题。我几乎可以肯定这是一个Asp.net Core CORS 错误,当您将它作为无状态服务托管在 Service Fabric 上并向其发送一些最小流量(而不仅仅是浏览器中的几次刷新)时,就会发生这种情况。

0 投票
1 回答
1113 浏览

exception-handling - Asp.Net Core MVC capture application exception details

After some research I could not find a way to capture application exceptions in asp.net core mvc with preserving default error page behaviour. There are actually two ways for custom handling application errors. First and simple way is to configure app.UseExceptionHandler("/Home/Error"); this in the Startup.cs file, but this way I'd lost the default DEVELOPMENT error page pretty view. Other solution to customize error handling in asp.net core mvc is to define exception handler inline, but that would cause default error page to override as well:

I need just to capture error details, without overriding the default behaviour (pretty default error page, et cetera). I don't need any custom exception handler, in fact I just need to grab exception. I'd like to do it at application level, so custom ExceptionHandlerAttribute that implements IExceptionFilter won't work. That solution would remove the default error page, also I need to catch middleware errors, not only controler exceptions. Following approach is not applicable:

That's the page, that I'd like to keep: default error page pretty view