2010-02-09 74 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