asp.net
  • relative-path
  • 2010-09-14 17 views 0 likes 
    0

    我已經繼承了一個網站,其中包含使用相對路徑設置的所有路徑,這些路徑僅在網站位於Web根目錄時才起作用。將整個項目更改爲根相對路徑的簡單方法

    我已經把網站放在一個虛擬目錄中,沒有一個路徑能正常工作。

    <img src="/img/logo/BadCo.gif" width="156" height="55" alt="BadCo" /> 
    

    我可以解決這個如下:

    <img src='<%= ResolveUrl("~/img/logo/BadCo.gif") %>' width="156" height="55" alt="BadCo" /> 
    

    不過,我不希望在整個項目手動更改數百條路徑中的每一個,以及未來與正則表達式做替換會傷害我的小腦袋。

    +2

    如果網站上有uris,則沒有那麼多類型。爲什麼不做全部更換?所有圖像都以'src =「/ image /'開頭,用'src =」/ virtualdir/image /'替換。所有的JavaScript以'src =「/ js /'開頭,替換爲'src =」/ virtualdir/js /'。 – jgauffin 2010-09-14 12:29:59

    +0

    不幸的是,它必須在虛擬目錄下運行,以適應我們測試和用戶環境的其他部分。我終於找到了子彈並編寫了一個http模塊來進行替換。感謝評論jgauffin – RobD 2010-09-20 14:42:59

    回答

    1

    如果它是可行的,你可以只作是一個網站在適當的IIS,只是爲它分配一個不同的端口。

    我在開發機器上採用這種方法,如果我想讓一個網站在IIS上正常工作而不是卡西尼。所以一切都將在http://localhost:[portnumber]/

    如果你必須使用一個虛擬目錄,我不會有想法。

    2

    就我個人而言,我不會把網站放在虛擬目錄中。

    從web根目錄指定路徑沒有任何壞處。這幾乎是該網站最終將部署的方式。

    您採取的方法意味着每次要解析URL時都需要執行代碼。這真的應該是發生免費,它可以。

    如果您使用Visual Studio的內置Web服務器進行開發,您可以輕鬆地在Web根目錄中定義一個站點。

    如果沒有,並且您使用的是XP,請考慮使用IISAdmin.NET。此工具允許您在本地IIS副本上設置多個網站,並在需要時切換它們。

    http://iisadmin.codeplex.com/

    0

    我想一個關鍵的問題是這個應用程序有多大。

    有沒有這麼多不同的地方放一個網址。爲什麼不尋找

    ="/ 
    

    ='/ 
    

    也就是說,一個等號,雙或單引號和斜線。這應該變成分配URL的大部分地方。然後你會看到你設置這些東西的所有地方,比如src =和navigateurl =等等。

    這將是一種痛苦。我不是說你會在十分鐘內完成它。如果這是你今天需要完成的事情,並且它是一個很大的應用程序,我不會接受它。但是如果你正在努力對一週進行更改和測試,我認爲你可以先清理網址,然後看看測試中出現了什麼。

    相關問題