I have a WCF rest web service. Everything works fine on my development environment (#develop using IIS express), but i get the following error on my production evironment:
Server Error in '/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
This is my web.config file:
<?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 question is related to this one
To run properly in my production evironment, it was necessary to specify the version, culture and key for inspectMessageBehavior. Ended up with the following configuration file:
<?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>
I don't know exactly how the version number is generated, even if it can be controlled, but I obtained it with the following command:
typeof(InspectMessageBehaviorExtension).AssemblyQualifiedName