2009-12-17 68 views
0

我有一個ASP.net 1.1應用程序。asp.net,web.config繼承,並清除身份驗證設置

在一個子文件夾中,我安裝了一個2.0應用程序blogengine.net。

該文件夾被設置爲一個應用程序,並使用適當的框架。

它的工作原理除了驗證。

問題是從根應用程序中的web.config繼承。

這個問題的常見解決方法是在嵌套應用程序的配置文件中爲每個要重置的對象使用「清除」。

<httpModules> 
    <clear/> 
</httpModules> 

的問題是,「清除」似乎並不被允許認證標籤內:

<authentication mode="Forms"> 
    <clear/> 
    <forms... rest of my child app's settings for authentication...> 
</authentication> 

這樣做,讓我一個語法錯誤。

任何人都知道一種方法來實現這個工作?我需要防止web.config中的根應用程序的身份驗證信息在子應用程序中被繼承。

更新:每curious_geek的答案,一個選項是修改根配置不允許繼承。不過,我的理解是,也會阻止system.config的屬性。這通常是一個大問題?這不是我的服務器,所以不知道這樣做是否會帶來一些安全問題,而這些安全問題可能與服務器管理員無法解決。

回答

3

您需要告訴父級web.config否強制子應用程序中的部分繼承。

如果你想停止system.web節繼承到child-app,那麼你會用下面提到的location元素包裝你的system.web節。

<location path="." inheritInChildApplications="false"> 

     <system.web> 

     </system.web> 

    </location> 

您也可以將這種技術應用於連接字符串和appsettings部分的停止繼承。

PS:當你真正在web.config中添加此 線,Visual Studio將 無法辨別是否爲有效,並將其標誌 爲錯誤,但放心,它 將IIS下很好地工作當部署 時。

+0

我的理解是,它也會排除系統配置設置被應用到根應用程序。這是一個問題嗎? – 2009-12-17 13:47:15

+0

@this .__ curious_geek我發現我可以有多個system.web聲明,這樣工作起來很棒,我只是將這個位置應用到只包含我不想繼承的項目的system.web。很棒。謝謝您的幫助! – 2009-12-18 15:47:51