在Azure webrole中动态更新sitemap.xml

在Azure webrole中动态更新sitemap.xml,azure,sitemap,azure-web-roles,Azure,Sitemap,Azure Web Roles,我正在将我现有的网站移动到Azure。在azure webrole中,我有 1.网站位于默认端口和 2.另一个港口的服务,比如说:8000 现在我的网站创建了一些动态页面,需要用新的URL更新sitemap.xml。在开发阶段,我能够从服务中创建和更新sitemap.xml文件。但这在临时服务器上是不可能的 我无法理解为什么会发生这种情况。有谁能告诉我一个解决方案,我可以从该服务在网站的根文件夹中创建一个sitemap.xml文件 我想说,你的问题远比sitemap.xml本身更严重 在Azur

我正在将我现有的网站移动到Azure。在azure webrole中,我有
1.网站位于默认端口和
2.另一个港口的服务,比如说:8000

现在我的网站创建了一些动态页面,需要用新的URL更新sitemap.xml。在开发阶段,我能够从服务中创建和更新sitemap.xml文件。但这在临时服务器上是不可能的


我无法理解为什么会发生这种情况。有谁能告诉我一个解决方案,我可以从该服务在网站的根文件夹中创建一个sitemap.xml文件

我想说,你的问题远比sitemap.xml本身更严重

在Azure WebRole中工作时,您有一个非持久性存储。这是我们为云的可伸缩性/弹性/弹性所付出的代价。这意味着,如果代码运行的硬件(裸机)出现问题,Azure将在一块新的金属上实例化一个新的硬件,并部署您的原始包。此时,所有动态生成的页面都将丢失,因为它们不是原始包的一部分

对于您的站点从用户上传/etc生成/接受的所有内容,您必须使用这些内容来保持。在blob存储中获得动态内容后,您有两个选项可以将其交付给最终用户:

  • ASP.NET处理程序(ashx),它将读取blob内容并将其重新流式传输(发送)给最终用户(我不赞成这样做)
  • 动态生成指向blob存储中内容的适当链接。如果内容必须受到保护且不是每个人都可以使用,则使用
  • 用于使最终用户的远程内容(Azure Blob)看起来像本地内容

现在您可能已经猜到了—让Sitemap.xml始终处于最新状态的最佳方法是再次使用ASP.NET处理程序动态生成其内容。当然,在每次请求Sitemap.xml时,使用某种缓存(甚至可能是blob)来避免昂贵的调用和对象图。

我想说,您的问题远比Sitemap.xml本身更大

在Azure WebRole中工作时,您有一个非持久性存储。这是我们为云的可伸缩性/弹性/弹性所付出的代价。这意味着,如果代码运行的硬件(裸机)出现问题,Azure将在一块新的金属上实例化一个新的硬件,并部署您的原始包。此时,所有动态生成的页面都将丢失,因为它们不是原始包的一部分

对于您的站点从用户上传/etc生成/接受的所有内容,您必须使用这些内容来保持。在blob存储中获得动态内容后,您有两个选项可以将其交付给最终用户:

  • ASP.NET处理程序(ashx),它将读取blob内容并将其重新流式传输(发送)给最终用户(我不赞成这样做)
  • 动态生成指向blob存储中内容的适当链接。如果内容必须受到保护且不是每个人都可以使用,则使用
  • 用于使最终用户的远程内容(Azure Blob)看起来像本地内容
现在您可能已经猜到了—让Sitemap.xml始终处于最新状态的最佳方法是再次使用ASP.NET处理程序动态生成其内容。当然,在每次请求Sitemap.xml时,使用某种缓存(甚至可能是blob)来避免昂贵的调用和对象图