c# - 在 Application_AquireRequestState 事件中用 POST 数据重写 Url

标签 c# asp.net asp.net-web-api

我有一个代码在应用程序的 Application_AcquireRequestState 事件中注册路由。路由注册后,我在 Http 运行时缓存中设置一个标志,这样我就不会再次执行路由注册代码。在这个事件 Application_AcquireRequestState 中注册路由有一个特定的原因。

应用程序池重新启动后,如果收到有效(匹配路由)请求,路由注册代码将启动,但 IIS/ASP.Net 不会为该请求提供服务,它会返回 404。后续有效请求是一切正常。

我想确保即使是第一个请求也能正确处理。

是否可以重写请求,以便在完成路由注册后,如果 url 与已注册的路由之一匹配,我们可以以某种方式尝试重播请求?有什么办法可以解决这个问题吗?

最佳答案

如下所示

events order

及以下

events

和下面的 SO 线程

When does routing take place in the pipeline?

您可能需要针对 AuthenticateRequestPostAuthorizeRequest 事件之间的某些内容来进行 URL 注册,因为路由会在那之后发生

Url 路由发生在 PostAuthorizeRequest 事件之后,由于路由已经被注册,第一个请求也将得到很好的服务。

关于c# - 在 Application_AquireRequestState 事件中用 POST 数据重写 Url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46309071/

相关文章:

c# - 为什么我应该创建异步 WebAPI 操作而不是同步操作?

c# - VSTestHost 正在崩溃并且不再工作

ASP.NET 仪表板/小部件

c# - 从 ASP.NET Web API 返回 HTML

jquery - 页面刷新后 SignalR 不向客户端广播数据

c# - 自动完成看起来不正确

c# - 运行 WebAPI 的路径

c# - 无法使用 C# 手动更新包含文本字段的 mysql 数据库

c# - 不可能的 NullReferenceException?

c# - 将存储在整数列表(小端)中的二进制表示形式转换为 Biginteger