2010-03-11 52 views
1

我正在寫一個從IHttpHandler繼承的用於腳本和CSS組合的類。如果querystring有一個特殊的參數定義,我只想合併。如果這個參數沒有定義,那麼我想寫文件的內容,就好像處理程序甚至沒有涉及。我遇到的一個問題是,我在頁面上有一個腳本標記,它指向虛擬目錄中的腳本,但我正在訪問的頁面位於應用程序的子目錄中。IHttpHandler請求對象和虛擬目錄問題

控制腳本被引用的頁面位於http://webserver/Admin/Default.aspx。當我訪問實現IHttpHandler的類中的Request對象時,所有文件路徑屬性如下:webserver/Admin /〜/ SharedScripts/control.js。我該如何解決這個問題?

回答

0

這是我想出瞭解決方案:

string fileContent = string.Empty; 
string filePath = context.Request.PhysicalPath; 
int tildeLocation = filePath.LastIndexOf("~"); 

string location = (tildeLocation == -1 ? filePath : context.Server.MapPath(filePath.Substring(tildeLocation, filePath.Length - tildeLocation))); 
0

基本上,您需要ResolveUrl方法,但您沒有Page或任何控件。 This article解釋瞭如何在沒有Page對象的情況下執行此操作。