2015-11-05 23 views
0

我有一个WCF休息Web服务。一切工作正常我的开发环境(#develop使用IIS快递),但我在我的生产环境中出现以下错误:WCF无法仅在PROD环境中创建自定义端点行为

'/ Services'Application中的服务器错误。 ------------------------------------------------- -------------------------------

Configuration Error 
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: An error occurred creating the configuration section handler for system.serviceModel/behaviors: Extension element 'inspectMessageBehavior' cannot be added to this element. Verify that the extension is registered in the extension collection at system.serviceModel/extensions/behaviorExtensions. 
Parameter name: element 

Source Error: 


Line 16:   </service> 
Line 17:  </services> 
Line 18:  <behaviors> 
Line 19:   <endpointBehaviors> 
Line 20:    <behavior name="webHttp"> 


Source File: C:\Otimis\AdvLinkForWebService\services\web.config Line: 18 


-------------------------------------------------------------------------------- 
Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053 

这是我的web.config文件:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
     <services> 
      <service name="AdvLinkForWebService.inbound"> 
       <endpoint address="" 
          binding="webHttpBinding" 
          contract="AdvLinkForWebService.Iinbound" 
          behaviorConfiguration="defaultWebHttpBehavior"/> 
      </service> 
      <service name="AdvLinkForWebService.config"> 
       <endpoint address="" 
          binding="webHttpBinding" 
          contract="AdvLinkForWebService.Iconfig" 
          behaviorConfiguration="webHttp"/> 
      </service> 
     </services> 
     <behaviors> 
      <endpointBehaviors> 
       <behavior name="webHttp"> 
        <webHttp/> 
       </behavior> 
       <behavior name="defaultWebHttpBehavior"> 
        <inspectMessageBehavior/> 
       </behavior> 
      </endpointBehaviors> 
     </behaviors> 
     <extensions> 
      <behaviorExtensions> 
       <add name="inspectMessageBehavior" 
        type="AdvLinkForWebService.MessageInspector.InspectMessageBehaviorExtension, AdvLinkForWebService"/> 
      </behaviorExtensions> 
     </extensions> 
    </system.serviceModel> 
</configuration> 

这个问题是关系到this一个

+0

vendettamit,请你看看? –

+0

Everythink看起来不错!我能看到的唯一的事情就是你有'DefaultWebHttpBehavior'和'webHttp'行为作为两个单独的行为。 “WebHttp”行为实际上是使WCF成为REST服务的行为。所以你必须在'defaultWebHttpBehavior'中定义'WebHttp'。 – vendettamit

+0

还要确保类型定义是正确的'AdvLinkForWebService.MessageInspector.InspectMessageBehaviorExtension,AdvLinkForWebService'因为错误说它找不到扩展名。 – vendettamit

回答

1

要在我的生产环境现状正常运行,有必要指定inspectMessageBehavior版本,文化和关键。结束了与下面的配置文件:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
     <extensions> 
      <behaviorExtensions> 
       <add name="inspectMessageBehavior" 
        type="AdvLinkForWebService.MessageInspector.InspectMessageBehaviorExtension, AdvLinkForWebService, Version=1.0.5791.17758, Culture=neutral, PublicKeyToken=null"/> 
      </behaviorExtensions> 
     </extensions> 
     <behaviors> 
      <endpointBehaviors> 
       <behavior name="defaultWebHttpBehavior"> 
        <webHttp/> 
        <inspectMessageBehavior/> 
       </behavior> 
       <behavior name="webHttp"> 
        <webHttp/> 
       </behavior> 
      </endpointBehaviors> 
     </behaviors> 
     <services> 
      <service name="AdvLinkForWebService.inbound"> 
       <endpoint address="" 
          binding="webHttpBinding" 
          contract="AdvLinkForWebService.Iinbound" 
          behaviorConfiguration="defaultWebHttpBehavior"/> 
      </service> 
      <service name="AdvLinkForWebService.config"> 
       <endpoint address="" 
          binding="webHttpBinding" 
          contract="AdvLinkForWebService.Iconfig" 
          behaviorConfiguration="webHttp"/> 
      </service> 
     </services> 
    </system.serviceModel> 
</configuration> 

我不知道究竟是如何产生的版本号,即使它可以控制的,但我用下面的命令获得它:

typeof(InspectMessageBehaviorExtension).AssemblyQualifiedName 
相关问题