Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果启动位于不同的程序集中,则AspNet Core AttributeRouting不会发现路由_C#_Asp.net Core_Attributerouting - Fatal编程技术网

C# 如果启动位于不同的程序集中,则AspNet Core AttributeRouting不会发现路由

C# 如果启动位于不同的程序集中,则AspNet Core AttributeRouting不会发现路由,c#,asp.net-core,attributerouting,C#,Asp.net Core,Attributerouting,我有一个场景,我们为许多小型AspNet核心网站建立了一个“标准化启动” 一个看似显而易见的解决方案是将Startup.cs类重构为一个单独的公共程序集(如Infrastructure.Web.Core.Startup)。然后,我们让每个小型AspNet核心网站将其引用到公共程序集,并使用该启动类: public static Microsoft.AspNetCore.Hosting.IWebHostBuilder CreateWebHostBuilder( string[] a

我有一个场景,我们为许多小型AspNet核心网站建立了一个“标准化启动”

一个看似显而易见的解决方案是将
Startup.cs
类重构为一个单独的公共程序集(如
Infrastructure.Web.Core.Startup
)。然后,我们让每个小型AspNet核心网站将其引用到公共程序集,并使用该启动类:

        public static Microsoft.AspNetCore.Hosting.IWebHostBuilder CreateWebHostBuilder( string[] args )
        {
            return new WebHostBuilder()
                   .UseKestrel()
                   .ConfigureServices( collection => { } )
                   .UseContentRoot( System.IO.Directory.GetCurrentDirectory() )
                   .UseStartup<Infrastructure.Web.Core.Startup>(); //.UseStartup<Startup>();
        }
如果让我猜一猜的话,这可能与依赖注入有关

有人有什么建议吗

仅供参考:它使用的是典型的AspNet核心2.1项目

更新 顺便说一句,如果我使用继承,它也可以工作,但是派生类必须与网站位于同一个项目中。我想这似乎是显而易见的,但我认为出于完整性考虑,我将这些信息包括在内:

    public class Startup : Infrastructure.Web.Core.Startup
    {
        public Startup( IConfiguration configuration ) : base(configuration)
        {
        }
    }

您可以通过在
Startup.cs
方法中将以下语句添加到您的服务中来解决此问题

services.AddApplicationPart(typeof(antypeinotherassembly.Assembly);
这将告诉视图/控制器发现也检查新位置。包含
Startup.cs
文件的项目将是启动项目,而所有其他项目将只是引用和库或类似文件

从.Net Core 3开始,您可以使用名为
Razor类库的工具,请参阅。这将自动将您的控制器和视图添加到发现中,它还具有调试支持,并将像普通类库一样工作

    public class Startup : Infrastructure.Web.Core.Startup
    {
        public Startup( IConfiguration configuration ) : base(configuration)
        {
        }
    }