c# - 升级到 inProcess 后,我在双斜杠上得到 404
问题描述
我有.net core 2.2 web api,我将其升级为“inProcess”,使用双前向 slah 调用此服务的客户得到 404,当将其配置为“OutOfProcess”时,它工作得很好。有问题的调用示例:
https://mMYapiAddress.co/api/GetSomeData//3
当将其配置为“OutOfProcess”时,它工作得很好。
我希望我的 web api 能够工作“inProcess”配置,并且能够像以前一样使用双斜杠进行调用。
解决方案
配置 "OutOfProcess" 时,Kestrel Web 服务器用于处理您的请求。在 Kestrel Web 服务器中,请求路径中的空格或额外字符串会被自动识别,并将路径修改为正确的格式。
配置“InProcess”时,使用 IIS HTTP 服务器(IISHttpServer)代替 Kestrel 服务器。请求由应用程序直接处理。所以你得到了 404 响应。
您可以自定义一个中间件来重写 url,如下所示:
public class RewriteRouteRule
{
public static void ReWriteRequests(RewriteContext context)
{
var request = context.HttpContext.Request;
if (request.Path.Value.Contains("values"))
{
string[] splitlist = request.Path.Value.Split("/");
var newarray = splitlist.Where(s => !string.IsNullOrEmpty(s)).ToArray();
var newpath = "";
foreach (var item in newarray)
{
newpath += "/" + item;
}
request.Path = newpath;
}
}
}
在 Startup.cs 的 Configure 方法中使用中间件
app.UseRewriter(new RewriteOptions()
.Add(RewriteRouteRule.ReWriteRequests)
);
推荐阅读
- c++ - 如何将用户与一本书(图书馆系统)C ++联系起来
- node.js - 在 axios reactJs 中获取 net::ERR_SSL_PROTOCOL_ERROR
- wordpress - Wordpress 页面显示丢失的照片错误
- html - CSS背景图像未加载
- react-native - 如何在最新版本的 React Navigation v5 中结合 createStackNavigator createDrawerNavigator
- reactjs - 无法重置路线反应原生导航
- c++ - 为什么我的梯度噪声发生器不起作用?
- opencv - 使用 OpenCV 验证绘制的线与计算机生成的线的相似性
- graphql - 使用 POST 获取完整的 GraphQL 响应,而无需在请求中指定字段名称
- c - 以特定格式打印字符串