我在 IIS 的网站内创建了一个应用程序。
我的应用程序用于托管运行 .Net 4.0 代码的 WCF 服务端点(创建它的网站正在运行 .Net 2.0)
当我加载此服务端点时,我收到模型和处理程序丢失的错误(因为根网站在 web.config 中定义了它们)。
我尝试将我的system.web和system.serviceModel包装在以下指令中:
<location path="." inheritInChildApplications="false">
<system.web>
...
</location>
但处理程序和模块继续尝试加载。
接下来,我尝试清除模块和处理程序。
<httpModules>
<clear />
</httpModules>
<httpHandlers>
<clear />
</httpHandlers>
这导致了以下错误:
未找到请求类型“GET”的 http 处理程序
接下来我尝试仅手动添加 .svc 的必要处理程序
<add
verb="*"
path="*.svc"
type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
这导致:
无法从程序集“System.ServiceModel,Version=3.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”加载类型“System.ServiceModel.Activation.HttpHandler”。
在 IIS 中,我的应用程序设置为 .Net 4.0。我没有看到直接在应用程序池上指定框架的方法(它只有回收、性能、健康、身份选项卡)。
我需要做的就是在 2.0 网站中添加这个运行 .net 4.0 的虚拟目录/应用程序,并托管一个 WCF 端点。
我的 4.0 应用程序在单独的应用程序池下运行。
添加整个 web.config
<?xml version="1.0"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.web>
<compilation debug="true" />
<authentication mode="Windows" />
<httpModules>
<clear />
</httpModules>
<httpHandlers>
<clear />
<add verb="*" path="*.svc"
type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</httpHandlers>
</system.web>
<system.serviceModel>
<bindings>
<!--<basicHttpBinding>
<binding name="extAcctCustMapBinding" maxBufferSize="1000000"
maxReceivedMessageSize="1000000" />
</basicHttpBinding>-->
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="DebugBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="DebugBehavior" name="MyService">
<endpoint binding="basicHttpBinding" name="MyService"
contract="IMyService" />
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="false"/>
</system.webServer>
</location>
</configuration>