ServiceHost Error

Damir Dobric Posts

Next talks:



Follow me on Twitter: #ddobric




Problem Description

Operation "xxx" of contract 'yyyy' specifies multiple request body parameters to be serialized without any wrapper elements. At most one body parameter can be serialized without wrapper elements. Either remove the extra body parameters or set the BodyStyle property on the WebGetAttribute/WebInvokeAttribute to Wrapped.



This error occurs while starting of the web service host:

1)  explicitly in the custom host:
    WebServiceHost xmlHost = new WebServiceHost(. . .) or

2)  implicitly by using of SVC-file in IIS host:

     <%@ ServiceHost Language="C#" Debug="true" Service=". . ."
                Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

The problem is caused by using of the usual service contract, which is styled for standard SOAP-Host (ServiceHost) and not as expected for the WebServiceHost.

This is an example of the contract which cause this error:

Airport[] GetCoordinates(string area, int numOfRecords);

To fix it, use REST-specific styling of the operation as shown below, or use ServiceHost instead of WebServiceHost.

[WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
Airport[] GetCoordinates(string area, int numOfRecords);


<%@ ServiceHost Language="C#" Debug="true" Service=". . ." %>

Posted Dec 26 2008, 11:31 PM by Damir Dobric
Filed under: is a .Net Community Blog powered by daenet GmbH.