При настройке «OutOfProcess» веб-сервер Kestrel используется для обработки ваших запросов. В веб-сервере Kestrel пробелы или дополнительные строки в пути запроса автоматически распознаются, а путь изменяется в правильном формате.
При настройке «InProcess» вместо сервера Kestrel используется HTTP-сервер IIS (IISHttpServer)Запросы обрабатываются непосредственно приложением. Итак, вы получили ответ 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;
}
}
}
Использовать промежуточное ПО в методе Configure Startup.cs
app.UseRewriter(new RewriteOptions()
.Add(RewriteRouteRule.ReWriteRequests)
);