Omr*_*i D 4 c# get query-string .net-core asp.net-core-webapi
我有 .net core 2.2 web api 我将它升级到“inProcess”,使用双前向斜杠调用此服务的客户端得到 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用Startup.cs的Configure方法中的中间件
app.UseRewriter(new RewriteOptions()
.Add(RewriteRouteRule.ReWriteRequests)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1115 次 |
| 最近记录: |