2011-06-29 35 views
1

這是一個相對簡單的問題。在將項目從開發服務器移動到活動服務器的同時更改URL

在開發ASP.Net網站時,如果我使用ResolveUrl()方法引用資源,它可以在實時服務器或開發服務器上工作,但不能同時在基於Url提供的兩者上工作。 例如,如果我的代碼嘗試使用下面的代碼選擇資源,它將在活動服務器上工作,但不在開發服務器上工作,因爲JScript.js不在http://localhost:xx/Assets之下,但在http://localhost:xx/ApplicationName/Assets之下。

<script src='<%# ResolveUrl("~/Assets/JScript.js")%>' type="text/javascript"></script> 

爲了使它在兩臺服務器上都能正常工作,我必須根據我工作的服務器不斷更改URL。

我一直在忍受這個煩人的問題,但一直忽略它。

有沒有更好的方法來做到這一點?

謝謝!

+1

如果您希望它們都位於相同的應用程序路徑下,請在Visual Studio中轉到您的Web項目屬性,單擊Web並更改「虛擬路徑」以匹配您的生產應用程序名稱。 – Zachary

+0

嘗試將虛擬路徑從'/ MyIntranet'改爲'/',但文件未被選中。 –

+0

如果您查看網頁的網址/來源,它現在是否顯示應用程序名稱?在您的本地開發框中,「JScript.js」的工作路徑是什麼? – Zachary

回答

1

,張貼在上面我的意見,你要使用<%=%><%#%>渲染一個內聯表達式。您只使用散列符號進行內聯數據綁定。

0

嘗試在DEV機器上製作http://localhost:xx/ApplicationName虛擬應用程序。這樣〜/資產將在PROD和DEV上的應用程序的根目錄

基本上,「資產」目錄需要位於您的應用程序的根目錄中,因此您需要使「資產」 Dev和PROD上的應用程序根目錄。

+0

我沒有在IIS上運行我的應用程序。我正在使用VS自帶的開發服務器。 –

1

我知道這可能不是現成的方式,但我使用這些來確保URLS在我的應用程序中是正確的,沒有問題。這些在我的頁面/視圖的基類可用...

public static string ApplicationRootUrl() 
     { 
      string port = String.Empty; 

      if (HttpContext.Current.Request.ServerVariables["SERVER_PORT"] != null && HttpContext.Current.Request.ServerVariables["SERVER_PORT"].ToString() != "80" && HttpContext.Current.Request.ServerVariables["SERVER_PORT"].ToString() != "443") 
      { 
       port = String.Concat(":", HttpContext.Current.Request.ServerVariables["SERVER_PORT"].ToString()); 
      } 

      string protocol = "http://"; 

      if (HttpContext.Current.Request.ServerVariables["SERVER_PORT_SECURE"] != null && HttpContext.Current.Request.ServerVariables["SERVER_PORT_SECURE"] != "0") 
      { 
       protocol = "https://"; 
      } 

      return String.Concat(protocol, String.Concat(HttpContext.Current.Request.Url.Host, port, HttpContext.Current.Request.ApplicationPath, '/').Replace(@"//", @"/").ToLower()); 
     } 

     /// <summary> 
     /// Expands a virtual URL to an absolute URL using the current application root url 
     /// </summary> 
     /// <param name="url"></param> 
     public static string ExpandUrl(string url) 
     { 
      if (url.Trim().StartsWith("~")) 
      { 
       return String.Concat(ApplicationRootUrl(), url.Substring(1).Replace("//", "/")); 
      } 

      if (url.Trim().StartsWith("www", StringComparison.OrdinalIgnoreCase)) 
      { 
       return String.Concat("http://", url); 
      } 

      return url; 
     } 
+0

出於某種原因,我相信馬克會有更好的方式。可能是在配置文件或類似的更改。我將盡可能地嘗試你的代碼。謝謝! –

相關問題