簡體   English   中英

多個web.config文件(在子目錄中)可以引用根代碼嗎?

[英]Can multiple web.config files (in subdirs) refer to root code?

我覺得這個問題確實有一個很明顯的答案,但是事實證明我的Google-fu太虛弱了。

我在唯一的測試服務器/環境(APPSVR)上有一個.NET應用程序,以方便討論。 此應用程序調用的Web服務位於四個不同的環境(SVC1,SVC2等)中。 每個月,我都會收到來自質量檢查部門的電子郵件,要求我將應用程序指向該月測試所需的正確服務環境。 這是一個15秒鍾的過程(在下面修改應用程序的web.config文件),但對我來說很煩人,它使他們無法完成工作,直到我看到電子郵件並完成為止。

<applicationSettings>
  <CM_MVC.Properties.Settings>
    <setting name="CM_MVC_CmsService_cms_webservice" serializeAs="String">
      <value>http://SVC1/cms-webservice/cms-webservice</value>
    </setting>
  </CM_MVC.Properties.Settings>
 </applicationSettings>

我要做的是進行設置,以便他們可以轉到http:// APPSVR / app / SVC#使應用程序指向正確的服務環境。 不過,理想情況下,我不希望每次進行更改時都不必將整個應用實際發布到四個不同的目錄中(這種情況很少見,但仍然...)。

關於將其他web.config文件放入子目錄的所有發現,也顯示(或暗示,據我所知)那些具有不同頁面或工作流的子目錄。 我什么都沒有。 我只需要一個應用程序,一組頁面和代碼,但是需要一種方法來使該設置有所不同。

有沒有辦法在子目錄中有一個web.config文件引用應用程序的根代碼?

或者,是否有其他解決方案,不需要每月進行微管理或重復復制/部署相同代碼?

有兩種解決方案。

1)使用在所有環境中都命名為相同的文件服務器,並在其中存儲應用程序設置。 這要求您在每個環境中都具有指向單獨文件服務器的dns條目。

2)您實際上可以將服務命名為相同的名稱,然后再次使用dns跨環境路由

3)您可以在每個環境中一次部署這部分應用程序設置,並在每次需要發布時停止將其作為解決方案的一部分進行部署

4)您可以結合使用自定義代碼和/或configSource =“ c:\\ ...”

我不確定您指的是應用程序的根代碼是什么意思。

如果我理解正確,我認為您只需要編寫一些代碼就可以基於某些屬性來確定URL ...現在,盡管您可能想要一個更安全的方法,但我們還是要說querystring。

我會:

  1. 將新設置添加到配置
  2. 將設置添加到設置文件
  3. 重命名現有的Web服務
  4. 用舊名稱覆蓋重命名的Web服務
  5. 編寫一些代碼來進行URL切換。

  1. 將設置添加到配置中:http:// SVC1 / cms-webservice / cms-webservice http:// SVC1 / cms-webservice / cms-test-webservice

  2. 將新設置添加到項目/Properties/Settings.settings文件中

  3. 重命名Visual Studio生成的類,方法是在解決方案資源管理器中將其突出顯示,然后按F2鍵並為其指定其他名稱,例如CmsWebServiceBase

  4. 現在,覆蓋由Visual Studio生成的Web服務類:

     public class CmsWebService : CmsWebServiceBase{ } 
  5. 構造函數中的代碼切換邏輯:

     public CmsWebService(){ // figure out if we should use Test or Live if( HttpContext.Current != null ){ if( HttpContext.Current.Request.QueryString["test"] == "true" ){ HttpContext.Current.Session["test"] = "true"; } if( HttpContext.Current.Session["test"] == "true" ){ this.Url = MyProject.Properties.Settings.CM_MVC_CmsService_cms_webservice_test; } } } 

請注意,如果您進行異步處理,或者使用WebService但Session不可用的其他任何方式,這將導致問題。

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM