使用IIS路由
服務從不同的站點或服務器的靜態內容。 您的Web應用程序部署在多個服務器上,動態Web內容位於一個站點或服務器上,並且所有靜態內容位於不同站點或服務器上。您可以將URL重寫模塊與IIS應用程序請求路由模塊一起使用,將靜態文件的所有請求轉發到其他服務器,同時爲當前服務器提供動態網頁的所有請求。這樣,ASP.NET路由僅用於動態Web內容,不會評估靜態內容的任何URL。
下面的例子表明,你可以使用此方案中的URL重寫規則:
<rewrite>
<rules>
<rule name="Forward to static file server">
<match url="^.+\.(?:jpg|bmp|gif)$" />
<action type="Rewrite" url="http://static_file_server/{R:0}" />
</rule>
</rules>
</rewrite>
的更多信息:HTTP://learn.iis.net/page.aspx/496/iis-url -rewriting-和ASPNET路由/
使用的HttpModule
你應該嘗試建立HTTP模塊是截取圖像請求,並嘗試紅色將它們直接轉到您的CDN路徑。首先,您需要將映像文件的文件擴展名映射到IIS中的aspnet_isapi。 然後,添加一個爲這些文件擴展名執行url重定向的httpmodule。 例如,在模塊的方法的BeginRequest:
空隙context_BeginRequest(對象發件人,EventArgs的) { 如果(request.url.endwith .JPG/.PNG ...) 重定向到路徑相對於所述根夾。 }
使用httpmodule的另一個選擇是攔截呈現的HTML並使用正則表達式替換圖像URL以指向CDN。在這裏你可以看到它是如何工作http://shoaibsheikh.blogspot.com/2012/05/change-image-url-in-aspnet-using.html
這種方法將會把頭頂在asp.net生命週期,因爲我們將收到的已發送到客戶端攔截整個頁面。
使用控制適配器
你應該嘗試ASP.Net控件適配器如果要辦理劫持圖像控制只圖像控件Render方法,並選擇性地改變CDN的URL路徑。這種方法風險較小,可拆卸。
public class CDNImageControlAdapter : ControlAdapter
{
protected override void Render(HtmlTextWriter writer)
{
Image img = this.Control as Image;
if (img == null)
{
base.Render(writer);
return;
}
if (img.ImageUrl.Length > 0)
{
// Let the HyperLink render its begin tag
img.RenderBeginTag(writer);
Image image = new Image();
if (img.ImageUrl.IndexOf("~") == 0)
{
img.ImageUrl = (img.ImageUrl.Replace("~", "http://mycdn.com/images/"));
}
img.RenderControl(writer);
}
else
{
// HyperLink.RenderContents handles a couple of other
// cases if its ImageUrl property hasn't been set. We
// delegate to that behavior here.
base.Render(writer);
}
}
}
,並添加All.broswer文件這App_Browsers文件夾應用
<!--
You can find existing browser definitions at
<windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers
-->
<browsers>
<browser id="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.WebControls.Image" adapterType="CDNImageControlAdapter, MyWebApplication" />
</controlAdapters>
</browser>
</browsers>
祺。
什麼是您使用的IIS版本? – 2012-04-25 12:15:45
看看這裏的可能的解決方案:http://stackoverflow.com/questions/4350571/changing-asp-net-application-root – Soliah 2012-05-16 04:01:23