【问题标题】:How can I make a Web App use its actual path, instead of a Temporary ASP.NET path如何使 Web 应用程序使用其实际路径,而不是临时 ASP.NET 路径
【发布时间】:2025-12-04 04:20:03
【问题描述】:

我有一个 Web 应用程序找不到它所依赖的 dll。 过去,此 Web 应用程序将从安装它的目录运行。 老版本的sxstrace显示:

ManifestPath = C:\Program Files\CompanyName\DecodingService\cpbin\CoordSystems.Internal.Translation.dll

升级到较新版本的 .NET 后,它现在从我假设的缓存或编译目录运行 Web 应用程序,sxstrace 显示新版本:

ManifestPath = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\decodingservice\b3438ba3\458e37dc\assembly\dl3\d7baeb04\00720865_2e07d501\CoordSystems.Internal.Translation.DLL

当它“编译”网络应用程序并将内容放在“临时 ASP.NET 文件”目录中时,它缺少指向本机 dll 的清单。 如果我可以让它跑出我部署它的路径,而不是编译的“临时 ASP.NET 文件”路径,它将能够找到清单并加载本机 dll。 如何阻止它复制或编译到“临时 ASP.NET 文件”目录? 请注意,另一种解决方案是将清单放入该目录,但清单名称与它关联的 dll 的名称不匹配,我认为这就是它没有意识到应该复制它的原因。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    一位远方的同事说临时路径用于“阴影”,因此搜索阴影可能会让我得到答案。以下是如何停止阴影: 告诉它不要在 Web.config 文件中隐藏:

    <configuration>
      <system.web>
        <hostingEnvironment shadowCopyBinAssemblies="false" />
      </system.web>
    </configuration>
    

    但需要注意的是,我不认为在此之后它会自动加载新的程序集,因此您可能需要 iisreset 或其他东西才能在您在网络中更改它们后使用它们应用程序。

    【讨论】: