服务器上没有可用的文件发送给客户端

时间:2019-10-11 09:44:40

标签: .net .net-core resx

我在ASPNET Core Web API中遇到一个奇怪的问题:

API证明是一个excel模板,以便允许用户填充数据并上传到系统。 这个excel模板位于项目内部,并且对文件的访问由资源文件(resx)管理,因为根据区域性存在不同的文件

作为已知主题,本地操作没有任何问题,但是,一旦部署,此下载模板将失败,日志中的错误如下:

  

异常消息:无法将类型为“ System.String”的对象转换为类型为“ System.Byte []”。

这是在csproj中管理文件的方式:

<ItemGroup>
    <None Remove="Resources\Templates\ImportTemplate-fr-FR.xlsx" />
    <None Remove="Resources\Templates\ImportTemplate.xlsx" />
</ItemGroup>

<ItemGroup>
    <EmbeddedResource Include="Resources\Templates\ImportTemplate-fr-FR.xlsx" />
    <EmbeddedResource Include="Resources\Templates\ImportTemplate.xlsx" />
</ItemGroup>

这是resx文件检索文件的方式:

_documentExcelImportService.GetTemplate(Resources.ImportExcelTemplate);

我也尝试了“总是复制”,结果相同

请注意,我们将应用程序部署到本地服务器以及Azure AppService

有什么主意吗?

提前谢谢

更新A (yolo sora问题):

GetTemplate正在直接检索字节数组并在DTO中封装更多信息,resx会​​自动对其进行管理:

public Document GetTemplate(byte[] resourceByteArray)
{            
    return new Document
    {
        FileName = GetFullFileName(),
        FileBlob = resourceByteArray,
        CreationDate = DateTime.Now,
    };
}

更新B

对日志进行了深入检查,我发现在尝试访问资源文件(resx)时,它将转到在管道进行编译的Azure代理服务器中创建的物理路径。很奇怪,但是,据我所知,我尝试手动发布,并通过此手动构建成功了!

所以似乎如何管理资源文件或引用...

想法?

0 个答案:

没有答案