2015-05-29 31 views
0

這是我當前的設置;IIS中虛擬MVC應用程序中的標頭行爲

在IIS中,我有兩個託管MVC應用程序,說App1app1.mydomain.com主辦。它有一個虛擬MVC 應用程序(不是目錄)App2託管爲app1.mydomain.com/app2

這兩個應用程序都有一個連接到相同的WCF服務。這個WCF服務需要在他們的請求標題,因此我已經添加了使用this每個呼叫的行爲。

我已經正確配置了應用程序的標題行爲(App1App1MessageHeaderInspectorApp2具有App2MessageHeaderInspector),並且無論是在自己的Web.config中配置。

所以,App1使用;

<client> 
    <endpoint address="http://ws.mydomain.com/Service.svc" binding="basicHttpBinding" 
    bindingConfiguration="BasicHttpBinding_IWebService" contract="WCFService.IWebService" 
    name="BasicHttpBinding_IWebService" behaviorConfiguration="WebServiceEndpointBehaviour" /> 
</client> 
<extensions> 
    <behaviorExtensions> 
    <add name="App1MessageHeaderInspector" type="App1.App1MessageHeaderBehaviourExtension, App1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null "/> 
    </behaviorExtensions> 
</extensions> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="WebServiceEndpointBehaviour"> 
     <App1MessageHeaderInspector /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

而且App2使用相同的配置,不同之處在於App1MessageheaderInspectorApp2MessageHeaderInspector

我已經配置我的App1路由到不顧一切去/app2;

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.IgnoreRoute("{*path}", new { path = @"app2\/(.*)" }); 
    //... 
} 

我可以成功地不需要到WCF服務的連接查看頁面(即app1.mydomain.com/app2/Home/Index返回正確的視圖)。

現在我的問題是,當我嘗試使用App2連接到WCF服務,我碰到下面的錯誤;

描述:處理服務此請求所需的配置文件時發生錯誤。請查看下面的具體錯誤細節並適當修改您的配置文件。

解析器錯誤消息:未能加載類型'App1.App1MessageHeaderBehaviourExtension,App1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'的擴展名'App1MessageHeaderInspector'。

但我不想App2加載從App1行爲!

我也試圖封裝<system.web><location inheritInChildApplications="false">App1,但沒有成功。

這兩個應用程序都可以在我的本地PC上進行測試時按預期工作。沒有Windows身份驗證或類似的事情。

我很卡在這個話題現在幾天。任何幫助表示讚賞。

回答

0

配置部分是繼承/默認合併當Web應用程序在你的情況下,另外一個配置等。正如你所看到的system.web部分有其打破繼承的機制,但這隻適用於system.web及其子項(可能甚至不是所有子項)。

說了這麼多,我想給在此一試(在你的應用2配置):

<extensions> 
    <behaviorExtensions> 
     <clear /> 
     <add name="App1MessageHeaderInspector" type="App1.App1MessageHeaderBehaviourExtension, App1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null "/> 
    </behaviorExtensions> 
</extensions> 
0

你有App1.dll在你的bin目錄APP 2的虛擬目錄下?該消息表明該dll無法在通常位置找到(如/ bin)

相關問題