如何使Web App使用其实际路径而不是ASP.NET临时路径

时间:2019-06-06 20:09:34

标签: asp.net

我有一个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

当它“编译” Web应用程序并将其放置在“ Temporary ASP.NET Files”目录中时,它缺少指向本机dll的清单。 如果我可以使它用完我部署它的路径,而不是已编译的“ Temporary ASP.NET Files”路径,它将能够找到清单并加载本机dll。 如何阻止它复制或编译到“ ASP.NET临时文件”目录? 请注意,另一种解决方案是将清单放入该目录中,但清单名称与它所关联的dll名称不匹配,我认为这就是为什么它不意识到应该复制它。 / p>

1 个答案:

答案 0 :(得分:0)

一位远方的同事说,临时路径用于“阴影”,因此寻找阴影可能使我得到了答案。这是停止阴影的方法: 告诉它不要在Web.config文件中隐藏:

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

但是要注意的是,我不认为在此之后它会自动加载新程序集,因此在网络上更改它们后,可能必须先进行iisreset或其他操作才能使用它们应用程序。