为什么我的API参数返回的总是小写?

问题描述 投票:0回答:1

我在 ASP.NET Core MVC 中有一个 Web API,我向其中传递加密参数,这些参数到达我的 API 时将被转换为小写(这种情况不应该发生,因为原始加密值具有大写和小写字母)。

通过设置以下值来配置启动类的ConfigureServices方法(但问题依然存在)

services.AddRouting(options => options.LowercaseQueryStrings = false);
services.AddRouting(options => options.LowercaseUrls = false);

这就是我在创业课程中学到的内容。

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    try
    {

        var iMvc = services.AddMvc(options =>
        {
            //options.Filters.Add(new SessionExpireAttribute());
            options.EnableEndpointRouting = true;
        }).AddPluggins(searchPatternList).AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
            options.JsonSerializerOptions.PropertyNamingPolicy = null;
        }).AddFluentValidation();
        services.AddSession(options =>
        {
            options.Cookie.Name = "session___";
            options.IdleTimeout = TimeSpan.FromMinutes(Configuration["Session:Duration"] == null ? 30 : Convert.ToDouble(Configuration["Session:Duration"]));
            options.Cookie.IsEssential = true;
        });
        services.AddHttpContextAccessor();
        services.AddControllersWithViews();
        services.AddResponseCaching();
        services.AddSignalR();
        services.AddRazorPages();
        services.AddRouting(options => options.LowercaseQueryStrings = false);
        services.AddRouting(options => options.LowercaseUrls = false);
    }
    catch (Exception ex) { logger.Error(ex); }
}

可能会发生什么?

c# asp.net-core asp.net-core-webapi
1个回答
0
投票

根据文档,除非

RouteOptions.LowercaseQueryStrings
RouteOptions.LowercaseUrls
,否则不会使用
true
,这让我觉得也许你应该尝试

services.AddRouting(options => {
    options.LowercaseQueryStrings = false;
    options.LowercaseUrls = false;
});

(只需一次调用

AddRouting
扩展方法即可设置路由选项,而不是连续两次调用。我认为第二个可能会覆盖第一个,但我不确定)

如果这不起作用,我建议您查看

SetCompatibilityVersion
扩展方法,看看更改兼容性选项是否可以修复它。

© www.soinside.com 2019 - 2024. All rights reserved.