我有一个相对较大的 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/