首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure应用程序服务无法访问文件,因此甚至不加载程序集

Azure应用程序服务无法访问文件,因此甚至不加载程序集
EN

Stack Overflow用户
提问于 2021-11-18 08:54:40
回答 1查看 460关注 0票数 0

目前,当我将Web应用程序部署为应用程序服务时,我面临着一个非常奇怪的问题。我不知道我做错了什么。

我的圈套

由于某些依赖关系,我有一个ASP.net核心2.2 (netstandard )网站在.net 4.8Framework下运行。该应用程序还运行为64位应用程序服务。

我的Web.config将ANCM配置为以OutOfProcess的形式运行输出可执行文件:

代码语言:javascript
运行
复制
<?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选项?

EN

回答 1

Stack Overflow用户

发布于 2021-11-19 07:55:27

看来问题既不是Azure的,也不是我的代码。这是我用来部署应用程序的工具。

当我通过JetBrains骑手部署我的应用程序时,我会遇到上述问题,如果我通过VisualStudio2022部署它,应用程序就会启动良好。我还不太明白这两者之间的区别,但是Rider做了一些非常错误的事情。

我开始怀疑Rider,因为即使是具有标准设置的新.net 5应用程序也没有运行。

因此,通过使用Visual进行部署,我可以解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70016975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档