目前,当我将Web应用程序部署为应用程序服务时,我面临着一个非常奇怪的问题。我不知道我做错了什么。
我的圈套
由于某些依赖关系,我有一个ASP.net核心2.2 (netstandard )网站在.net 4.8Framework下运行。该应用程序还运行为64位应用程序服务。
我的Web.config将ANCM配置为以OutOfProcess的形式运行输出可执行文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyWebsite.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" />
</system.webServer>
</configuration>
将应用程序部署到本地IIS时,此设置运行良好。
我的问题
在启动时向Azure部署与assemblies相同的应用程序时,应用程序声称无法加载某些程序集。有FileNotFoundException
抛出的错误和FusionLog错误,说明了0x80070002 Failed to complete setup of assembly
。
经过长时间的调查,我可以把这个问题缩小到一个主要问题上:
MyWebsite.exe
不允许从部署在Azure的C:\home\site\wwwroot
中的文件中读取任何数据。我可以通过简单地读取工作目录中的任何文件(比如位于exe旁边的exe.config )来证明这一点。
同样在FusionLog中,我可以看到一个错误,声称它无法加载exe.config。
这导致了一个问题:由于不允许文件访问,我的应用程序无法加载它附带的任何DLL。
重要的是要知道:如果我从Kudo控制台启动我的应用程序,它就会启动得很好。
更新:--我向我的应用程序添加了一堆额外的检查--它变得更加疯狂。在这个要旨中可以找到一些源代码洞察和日志输出。
FileNotFoundException
。更新2:我准备了一个示例项目供每个人试用。只需遵循这个Git:https://github.com/Danielku15/AzureFileNotFound中的步骤
我的问题
如何确保我的应用程序能够访问它附带的文件?是否有特殊的部署设置,或对Azure中的操作非常重要的web.config选项?
发布于 2021-11-19 07:55:27
看来问题既不是Azure的,也不是我的代码。这是我用来部署应用程序的工具。
当我通过JetBrains骑手部署我的应用程序时,我会遇到上述问题,如果我通过VisualStudio2022部署它,应用程序就会启动良好。我还不太明白这两者之间的区别,但是Rider做了一些非常错误的事情。
我开始怀疑Rider,因为即使是具有标准设置的新.net 5应用程序也没有运行。
因此,通过使用Visual进行部署,我可以解决这个问题。
https://stackoverflow.com/questions/70016975
复制相似问题