您看到的问题是,当您使用其他应用程序启动虚拟主机时,它使用其他应用程序的位置作为它的根。所以,这里是正常启动服务:
这里是使用控制台应用程序启动它:
所以发生的情况是,当您将ExternalLoginTest 作为依赖项添加到SelfHostedConsoleApp 时,编译器现在移动 ExternalLoginTest 模块到SelfHostedConsoleApp 的目录中,基本上破坏了您的路径。
第 1 步:复制 wwwroot 目录
所以这里的挑战是我们必须将wwwroot 移动到新的目的地。我看到你在你的问题中尝试过,但它需要是这样的:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Content Include="wwwroot\**" Link="wwwroot\%(RecursiveDir)%(Filename)%(Extension)"
CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
</Project>
这将创建一个指向宿主项目中wwwroot 目录的符号链接。
第 2 步:EnableDefaultContentItems 选项设置为 false
执行此操作时,您会看到各种错误以及将EnableDefaultContentItems 添加到false 的内容。所以让我们继续这样做吧:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
<ItemGroup>
<Content Include="wwwroot\**" Link="wwwroot\%(RecursiveDir)%(Filename)%(Extension)"
CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
</Project>
如果我们现在运行它,它将返回 404。但是,为了证明静态内容有效,请尝试转到 http://localhost:5000/favicon.ico,它会显示静态内容。
第 3 步:将您的剃须刀页面添加为 Content
它现在返回 404 的原因是因为您的剃须刀页面都没有标记为 Content,因此框架认为您没有要显示的页面。将EnableDefaultContentItems 设置为false 的唯一主要缺点是我们必须手动将剃刀页面添加到.csproj 文件中。 Visual Studio 不会再为我们做这件事了。因此,现在您的项目文件将如下所示:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
<ItemGroup>
<Content Include="wwwroot\**" Link="wwwroot\%(RecursiveDir)%(Filename)%(Extension)"
CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup>
<Content Include="Pages\Error.cshtml" />
<Content Include="Pages\Index.cshtml" />
<Content Include="Pages\Privacy.cshtml" />
<Content Include="Pages\Shared\_Layout.cshtml" />
<Content Include="Pages\Shared\_ValidationScriptsPartial.cshtml" />
<Content Include="Pages\_ViewImports.cshtml" />
<Content Include="Pages\_ViewStart.cshtml" />
</ItemGroup>
</Project>
执行此操作的捷径是在您的页面上按住 shift 单击,右键单击并执行“属性”,然后在属性窗口中将 Build Action 更改为 Content。
第 4 步:运行!
此时我们应该是 100%: