2010-02-09 69 views
1

我使用的URL路由(與Web窗體)按下列格式的web.config文件:URL路由和嵌套文件夾

http://host/project/{projectid}/{pageName} 

另一種選擇是,用戶是指的一個子程序:

http://host/project/{projectid}/{application}/{pageName} 

子應用程序不是一個新的Web應用程序,只是一個虛擬目錄。
我的子應用程序確實有一個web.config,其中包含一些特定的appsettings/connstrings。

一切工作正常,沒有URL路由。

但是,當我以路由形式請求URL時,子應用程序的web.config未得到處理,並且我在所有appsettings/connstrings(通過ConfigurationManager)上獲得了null引用。

下面是我的自定義處理程序的代碼:

string path = String.Format(_pagesFormat, application, pageName); 
return (IHttpHandler) BuildManager.CreateInstanceFromVirtualPath(path, typeof(Page)); 

它的工作原理,如果我將我的路線更改爲http://host/{application}/{projectid}/{pageName}
這可能會觸發IIS加載虛擬目錄的web.config文件也是如此。

我可以以某種方式強制加載嵌套web.config的設置?

編輯:
此人有類似的問題:
http://forums.asp.net/p/1452479/3317775.aspx

任何想法?

回答

1

出於某種原因,對System.Web標籤和其他幾個標籤
web.config中被處理(即駐留在虛擬目錄)。

我決定把我的應用程序設置和連接字符串設置爲兩個獨立的文件根:

  • 的web.config根(IS,編輯,處理程序配置)
  • 網絡。 AppSettings.config在根
  • web.Connections.config在根

  • 每個虛擬目錄(用戶控制,母版配置)的web.config