如何在开发和生产站点中维护CDN图像链接?

时间:2010-08-28 16:48:51

标签: asp.net-mvc hyperlink cdn

我有这个ASP.NET MVC应用程序,我现在想要将图像链接分离到CDN。 此时,图像通常具有以下标记代码:

<%= Html.ActionLinkWithImage("/Content/Img/Image1.png" ...

这在使用本地Web服务器(Cassini)进行开发时以及发布prod服务器时都可以正常工作 但现在我想要生产URL如下:

http://cdn.com/Img/Image1.png

如何让它以简单的方式工作,以便它在开发中无缝地工作,并在发布到prod之后?

2 个答案:

答案 0 :(得分:3)

您可以创建一个URL扩展方法,该方法将根据Web.config文件(或其他内容)中的值生成调试URL或实时URL。

public static MvcHtmlString CDNImageLink(this UrlHelper url, string imageName)
{
    string urlFormat;
    if((bool)ConfigurationManager.AppSettings["Debug"])
        urlFormat = "/Content/Img/{0}";
    else
        urlFormat = "http://cdn.com/Img/{0}";

    return MvcHtmlString.Create(string.Format(urlFormat, imageName));
}

然后,您可以在需要图片网址的任何地方使用此扩展程序(包括Html扩展程序):

public static MvcHtmlString ActionLinkWithImage(this HtmlHelper html, string imageName)
{
     UrlHelper Url = new UrlHelper(html.ViewContext.RequestContext);
     string imageUrl = Url.CDNImageLink(imageName);
     // generate the rest of the ActionLink using the imageUrl
}

确保您具有Url扩展方法位于您声明HTML扩展方法的文件顶部的命名空间的using语句,否则它将无法识别它。

答案 1 :(得分:0)

您还可以修改主机文件,将您的cdn域重定向到另一个IP地址。我用它来将static.myresources.com一直重定向到localhost,它让你的html保持干净。