【问题标题】:Action delegate not configuring mvc in ConfigureServices操作委托未在 ConfigureServices 中配置 mvc
【发布时间】:2021-01-13 20:42:22
【问题描述】:

我已经开始学习 asp.net core 并尝试提高我的 c# 知识。

我在启动课程中遇到了 ConfigureServices 的问题。

    public void ConfigureMvcOptions(MvcOptions options)
    {
        options.EnableEndpointRouting = false;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        Action<MvcOptions> options = new Action<MvcOptions>(ConfigureMvcOptions);
        services.AddMvc(options);
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseStaticFiles();
        app.UseMvcWithDefaultRoute();

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello world");
        });
    }

以上是导致编译错误

"警告 MVC1005 使用 'UseMvcWithDefaultRoute' 配置 MVC 是 使用端点路由时不支持。继续使用 'UseMvcWithDefaultRoute',请设置'MvcOptions.EnableEndpointRouting = false' 在 'ConfigureServices' 中"

我可以改为在 AddMvc 方法中使用 Lambda 表达式来消除错误,但我不明白为什么会这样

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc((options) => options.EnableEndPointRouting = false);
}

以上工作没有问题。我只是不明白 Action 委托的实现有什么问题?

【问题讨论】:

    标签: c# asp.net-core generics delegates


    【解决方案1】:

    有一个Roslyn Analyzer 用于检查您使用UseMvcUseMvcWithDefaultRoute 的情况,但您尚未将EnableEndPointRouting 设置为false。不幸的是,这个分析器不够聪明,无法检测到您的 ConfigureMvcOptions 方法确实EnableEndPointRouting 设置为 false

    这意味着避免此警告的唯一方法是内联设置值,正如您使用所显示的修复所做的那样。值得注意的是,在 ASP.NET Core 3+ 中使用 MVC 的推荐设置是使用端点路由,而不是禁用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 2012-03-25
      相关资源
      最近更新 更多