我有这个ASP.NET MVC应用程序,我现在想要将图像链接分离到CDN。 此时,图像通常具有以下标记代码:
<%= Html.ActionLinkWithImage("/Content/Img/Image1.png" ...
这在使用本地Web服务器(Cassini)进行开发时以及发布prod服务器时都可以正常工作 但现在我想要生产URL如下:
http://cdn.com/Img/Image1.png
如何让它以简单的方式工作,以便它在开发中无缝地工作,并在发布到prod之后?
答案 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保持干净。