![](/img/trans.png)
[英]Getting virtual directories from IIS with powershell in an MVC application
[英]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
具有App1MessageHeaderInspector
和App2
具有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>
除了App1MessageheaderInspector
是App2MessageHeaderInspector
之外, 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”。
但是我不希望App2
从App1
加载行为!
我还尝试在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.