繁体   English   中英

IIS中的虚拟MVC应用程序中的标头行为

[英]Header behaviour in a virtual MVC application in IIS

这是我当前的设置;

在IIS中,我有两个托管的MVC应用程序,例如App1托管在app1.mydomain.com 它有一个虚拟MVC 应用程序 (不是目录) App2托管为app1.mydomain.com/app2

这两个应用程序都连接到相同的WCF服务。 此WCF服务在其请求中需要标头,因此我为每个使用this的调用添加了行为。

我已经正确配置了两个应用程序的标头行为( App1具有App1MessageHeaderInspectorApp2具有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>

除了App1MessageheaderInspectorApp2MessageHeaderInspector之外, App2使用相同的配置。

我已经在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服务,就会收到以下错误;

说明:在处理服务于此请求所需的配置文件期间发生错误。 请查看下面的特定错误详细信息,并适当修改您的配置文件。

解析器错误消息:无法加载为扩展名“ App1MessageHeaderInspector”注册的类型“ App1.App1MessageHeaderBehaviourExtension,App1,版本= 1.0.0.0,区域性=中性,PublicKeyToken = null”。

但是我不希望App2App1加载行为!

我还尝试在App1使用<location inheritInChildApplications="false">封装<system.web> ,但没有成功。

从我的本地PC进行测试时,这两个应用程序都可以正常工作。 没有Windows身份验证或类似的东西。

我在这个话题上呆了几天了。 任何帮助表示赞赏。

如果将Web应用程序配置为与您的情况相同,则默认情况下将继承/合并“配置”部分。 如您所见, system.web部分具有打破继承的机制,但这仅适用于system.web及其子项(甚至可能不是所有子项)。

话虽如此,我会尝试一下(在您的App2配置中):

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

在bin目录中,app2的虚拟目录下是否有App1.dll? 该消息表明在通常位置(例如/ bin)找不到dll。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM