我有.net core 2.2 Web API 我将其升级为“ inProcess”,使用双前向slah调用此服务的客户端得到了404,将其配置为“ OutOfProcess”时,它就可以正常工作。 有问题的通话示例:
https://mMYApiAddress.co/api/GetSomeData//3
将其配置为“ OutOfProcess”时,就可以正常工作。
我希望我的Web api能够进行“ inProcess”配置,并且能够像以前一样使用双斜杠进行调用。
答案 0 :(得分:0)
配置“ OutOfProcess”时,Kestrel web server用于处理您的请求。 在Kestrel Web服务器中,将自动识别请求路径中的空格或多余的字符串,并将路径修改为正确的格式。
配置“ InProcess”时,将使用IIS HTTP服务器(IISHttpServer)代替Kestrel服务器。请求直接由应用程序处理。这样您就收到了404响应。
您可以自定义中间件来重写网址,如下所示:
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)
);