【问题标题】:How to include Azure CDN as part of ASP.NET MVC workflow?如何将 Azure CDN 作为 ASP.NET MVC 工作流的一部分包含在内?
【发布时间】:2015-08-13 20:43:37
【问题描述】:

我有一个相对较大的 ASP.NET MVC4 Web 应用程序。它一直在快速积累静态资产,现在它拥有视频和大型 PDF 作为 Visual Studio 项目本身的静态资产的一部分。

我目前直接从 Visual Studio 的发布功能将其部署到 Azure 的网站服务。

我想将这些大型静态资产移动到 Azure blob 存储中,以便 Azure CDN 服务可以为我提供服务。我目前在 blob 存储中有一些较大的文件,这些文件是我手动放置的。我在我的 Razor 模板中手动硬编码这些 CDN 资产的 URL。这绝对不会扩展,也无法管理。

是否可以将 Azure CDN 作为我的 Visual Studio 工作流的一部分包含在内,这样我就可以使用相同的 API(如 @Url.Resource("~/public/pdf/large.pdf"))引用我的项目资产,并且如果我知道如何使用本地文件'我在调试模式,否则 CDN URL 如果这是在发布模式?发布时还可以选择管理将内容上传到 Blob 存储吗?

我在谷歌上搜索过,但没有找到任何看起来如此集成的东西。

【问题讨论】:

  • 您查看过 Azure 存储客户端库吗? blogs.msdn.com/b/windowsazurestorage/archive/2012/10/29/…
  • 您使用的是哪个版本的 Azure SDK?
  • 嗯,关于确切的版本我还不确定。我不知道在哪里可以找到它。它是 Visual Studio 2013 Ultimate 附带的。我将研究存储客户端库。

标签: c# asp.net-mvc azure


【解决方案1】:

这篇文章here 展示了如何使用 Powershell 来处理您的内容和脚本文件。操作提供的script 以指向另一个文件夹,您的静态文件所在的文件夹更符合您的需求,这将是相当容易的。然后,您可以在构建管道期间调用该脚本。

为了在 Debug vs Release 中管理对项目资产的引用,我可能会创建一个自定义 MVC Helper Function 来包装 @Url.Resource() 并读取当前配置并设置正确的 url。

在 sudo 代码中会是这样的:

public static class MyHeleprs
{ 
    public static MvcHtmlString MyResource(this HtmlHelper htmlHelper, 
        string resourceString)
    {
#if(DEBUG)
        return MvcHtmlString.Create(Url.Resource("~/public/" + resourceString));
#else
         return MvcHtmlString.Create("<path_to_cdn>/" + resourceString);
#endif

    } 
} 

并使用它:

@Html.MyResource("/pdf/large.pdf");

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2018-03-27
    相关资源
    最近更新 更多