1

我有用 C# 编写的 Azure 云服务项目。此项目包含 Azure 工作者角色。

我的工人角色是引用另一个项目(在同一解决方案中),其中包含一个目录。在这个目录中有 10 个 HTML 文件。所有这些文件都标有这些设置(文件设置):

构建操作:内容

复制到输出目录:如果较新则复制

我建立了我的工作角色,这些内容文件位于此路径上:bin/release/my-files/dir。所以,我的项目配置看起来不错。

我将我的天蓝色云服务发布到 Azure,并且内容文件未上传。我通过将远程桌面连接到机器并检查此路径来验证这一点:“E:\approot”。我的内容文件不存在。

我应该怎么做才能上传这些内容文件?

更新

感谢@ Gaurav_Mantri的评论,我检查了 CSSX 文件,我的内容文件在那里丢失。不,我不知道发布后我的 azure worker 角色也丢失了。

我还尝试更改“复制到输出目录-> 始终复制”。结果相同。

4

2 回答 2

1

一般指导是尽可能避免云服务和 PaaS 中的本地文件系统交互,因为(除其他外)它要求您在解决方案中的每个 VM 上复制您的内容(面对自动缩放,这不一定是一项微不足道的任务, ETC。)。在 Azure 中有几个选项:

Azure 文件允许您从一个中央位置与文件和文件夹交互,作为网络共享:

Azure 文件存储

您始终可以直接从 Azure Blob 读取和写入文件:

Azure Blob 存储

如果您的 HTML 内容文件是面向公众的并且接收的流量不多,您还可以考虑使用 Azure CDN 服务来托管它们:

Azure CDN

祝你好运!

于 2016-04-19T13:54:12.350 回答
1

不是真正的答案,而是您可能想要检查文件是否包含在包本身中的一件事。本质上,包文件 ( *.cspkg) 是一个 zip 文件。您可以做的是将文件的扩展名从更改cspkgzip并提取该文件。

解压缩 zip 文件后,您将看到cssx每个角色的扩展名文件。将这些文件的扩展名也更改zip为并解压缩这些文件。

如果一切配置良好,您应该能够在适当的目录中看到这些文件。如果文件不存在,这意味着有问题(显然)。在这种情况下,您可以尝试更改Copy to output directory为,Copy Always而不是Copy if newer您当前拥有的设置。

于 2016-04-20T07:27:16.490 回答