我正在尝试创建托管在 Azure Web 角色中的 WCF 服务。该服务必须能够通过肥皂和休息到达。
我一直在阅读一些文章,并且能够创建(或者至少我是这么认为的)具有所有规范的服务。
我想要做的是使用 SoapUI 项目使用我的休息端点,使用带有所有参数的查询字符串执行 POST,但是当我运行这个项目时,我得到的响应是:
服务器在处理请求时遇到错误。异常消息是“反序列化操作“CPlano”的请求消息正文时出错。OperationFormatter 无法反序列化消息中的任何信息,因为消息为空 (IsEmpty = true)。
这是我的 Web.Config 的一部分:
<bindings>
<webHttpBinding>
<binding name="webBinding" maxReceivedMessageSize ="50000000" maxBufferPoolSize="50000000">
<readerQuotas maxDepth="500000000" maxArrayLength="500000000" maxBytesPerRead="500000000"
maxNameTableCharCount="500000000" maxStringContentLength="500000000"/>
<security mode="None" />
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="RestBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="Namespace.CService" behaviorConfiguration="ServiceBehavior">
<endpoint name="RESTEnpoint" contract="Namespace.ICService" binding="webHttpBinding" bindingConfiguration="webBinding" bindingNamespace="http://www.example.com/" address="rest" behaviorConfiguration="RestBehavior" />
<endpoint name="SOAPEndpoint" contract="Namespace.ICService" binding="basicHttpBinding" bindingNamespace="http://www.example.com/" address=""></endpoint>
</service>
</services>
这也是我的服务接口声明:
[ServiceContract(Namespace = "http://www.example.com/")]
public interface ICService
{
[OperationContract]
[WebInvoke(UriTemplate = "/CPlano",
BodyStyle = WebMessageBodyStyle.Wrapped,
Method = "POST")]
RespuestaCotizador CPlano(int idUsuario, string usuario, string pass, int modalidad, int servicio,
int medicion, string paisDestino, int envio, decimal peso, decimal largo, decimal ancho, decimal alto);
}
最后是我的响应类:
[DataContract(Namespace = "http://www.example.com/")]
public class RespuestaCotizador
{
[DataMember]
public bool HasError;
[DataMember]
public string ErrorMessageESP;
[DataMember]
public string ErrorMessageENG;
[DataMember]
public decimal PrecioCotizado;
public RespuestaCotizador()
{
HasError = false;
ErrorMessageESP = string.Empty;
ErrorMessageENG = string.Empty;
PrecioCotizado = 0;
}
}
我正在使用统一进行依赖注入,但这似乎无关紧要。
即使我在本地运行服务,我什至可以到达第一个断点。