首页 > 解决方案 > Visual Studio ASP.NET Web 部署 - 每个引用自定义库的页面都给出错误 404

问题描述

我在使用 Visual Studio 2017(版本 15.7.27703.2035)构建的 ASP.NET Framework 4.6.1 中有一个应用程序。该项目本身在 localhost 上可以 100% 正常运行。此项目包含在主要项目中引用的 3 个 ASP.NET Framework 4.6.1 库。

在此处输入图像描述

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
    <UserSecretsId>...</UserSecretsId>
    <WebProject_DirectoryAccessLevelKey>0</WebProject_DirectoryAccessLevelKey>
  </PropertyGroup>

  ...

  <ItemGroup>
    <ProjectReference Include="..\CrmDatabaseManager\CrmDatabaseManager.csproj" />
    <ProjectReference Include="..\SysaidDatabaseManager\SysaidDatabaseManager.csproj" />
    <ProjectReference Include="..\UserInterfaceLibrary\UserInterfaceLibrary.csproj" />
  </ItemGroup>

  ...

</Project>

发布项目后,事实证明,引用其中一个自定义库的每个页面都给出错误 404,所有其他页面都正常工作。

当我将这些库添加到项目中时,问题就出现了。

库无法正确部署有什么原因吗?

标签: asp.net-mvcvisual-studioazuredlldeployment

解决方案


事实证明,使用库拆分项目确实破坏了路径引用。

我正在对路径进行硬编码,并且在主项目中没有任何问题。当我用库拆分项目时,它导致了错误 404。

要访问库中的文件,您需要先执行以下操作:

  1. 右键单击文件>属性
  2. Build action上,选择Always copy the file

然后在库上以这种方式指定路径:

var buildDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var filePath = buildDir + @"\fileName.json";

using (StreamReader r = new StreamReader(filePath))
{
   // code here
}

推荐阅读