c# - 如何将 Azure CDN 作为 ASP.NET MVC 工作流程的一部分包含在内?

标签 c# asp.net-mvc azure

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

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

我想将这些大型静态 Assets 移动到 Azure Blob 存储中,以便 Azure CDN 服务可以为我提供它们。目前,我在 Blob 存储中有一些较大的文件,是我手动放置的。我在 Razor 模板中手动对这些 CDN Assets 的 URL 进行硬编码。这绝对无法扩展并且无法管理。

是否可以将 Azure CDN 作为我的 Visual Studio 工作流程的一部分,以便我可以使用相同的 API 引用我的项目的 Assets ,例如 @Url.Resource("~/public/pdf/large.pdf"),并且知道在 Debug模式下使用本地文件,或者在 Release模式下使用 CDN URL 吗?发布时还可以选择管理将内容上传到 Blob 存储吗?

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

最佳答案

这篇文章here展示如何使用 Powershell 为您的内容和脚本文件执行此操作。操纵提供的 script 相当容易。指向静态文件所在的另一个文件夹并更紧密地满足您的需求。然后,您可以在构建管道期间调用该脚本。

为了在调试与发布中管理对项目 Assets 的引用,我可能会创建一个自定义 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");

关于c# - 如何将 Azure CDN 作为 ASP.NET MVC 工作流程的一部分包含在内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31998066/

相关文章:

c# - 为什么列表使用的内存几乎是数组的 3 倍?

asp.net-mvc - MVC 5的优点是什么

c# - 单元测试 - 模拟 - 可覆盖的问题 - 扩展方法

Azure 服务总线无法连接到 kubernetes docker

c# - 当我向其中添加一项时,为什么 NHibernate 会删除并重新创建集合中的所有关联?

c# - ASP.NET 中的 NetworkCredential 错误

c# - 对谷歌流式语音识别进行一些更改,但它不起作用

c# - MVC 中 RadioButtonFor 的回发

Javascript GetElementById 将值设置为输入

c# - Azure - 创建函数应用程序 - 至少一项资源部署操作失败