Ok, esto me está volviendo loco. He estado tratando de construir código de implementación de servicio de un WSDL predefinida y se está volviendo constantemente un mensaje en el contrato de servicio/interfaz:Generar código de WSDL en WCF sigue devolviendo el mensaje no coincide con el valor predeterminado
// CODEGEN: Generating message contract since the wrapper name (GetMetricsRequest) of message GetMetricsRequest does not match the default value (GetMetrics)
[System.ServiceModel.OperationContractAttribute(Action="GetMetrics", ReplyAction="*")]
[System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
GetMetricsResponse GetMetrics(GetMetricsRequest request);
he tratado de hacer esto utilizando svcutil.exe y servicio Generar de la FUMEC asistente de código, y ambos devuelven el mismo resultado.
A continuación se muestra el WSDL que estoy usando. He agregado los tipos aquí, los tengo divididos en un xsd separado, simplemente no quería publicar ambos. Usar este wsdl (con todos los tipos incrustados) también genera los mismos problemas.
He revisado esta entrada del blog (http://pzf.fremantle.org/2007/05/handlign.html), se trata de todo lo que pude encontrar sobre este problema. Creo que hice todo lo que dice que hacer, pero todavía tengo problemas.
¿Alguien más se ha encontrado con esto? Es muy irritante, tal vez me falta algo obvio. Cualquier ayuda será apreciada.
<wsdl:definitions
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="urn:MyNameSpace:V1_0"
targetNamespace="urn:MyNameSpace:V1_0">
<wsdl:types>
<xs:schema targetNamespace="urn:MyNameSpace:V1_0">
<xs:element name="GetMetricsRequest">
<xs:complexType>
<xs:sequence>
<xs:element nillable="true" name="GetMetricRequestElement" type="tns:GetMetricRequestType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetMetricResponse">
<xs:complexType>
<xs:sequence>
<xs:element nillable="true" maxOccurs="unbounded" name="GetMetricResponseElement" type="tns:GetMetricResponseType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="GetMetricResponseType">
<xs:sequence>
<xs:element nillable="true" name="Metrics" type="tns:MetricsType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GetMetricRequestType">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="MetricCriteria" nillable="true" type="tns:MetricCriteriaType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="AvailableMetricType">
<xs:restriction base="xs:string">
<xs:enumeration value="MetricType1"/>
<xs:enumeration value="MetricType2"/>
<xs:enumeration value="MetricType3"/>
<xs:enumeration value="MetricType4"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="AvailableMetricsType">
<xs:sequence>
<xs:element minOccurs="1" nillable="true" maxOccurs="unbounded" name="MetricType" type="tns:AvailableMetricType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="MetricDimensionType">
<xs:restriction base="xs:string">
<xs:enumeration value="Store"/>
<xs:enumeration value="Workgroup"/>
<xs:enumeration value="BusinessDate"/>
<xs:enumeration value="JobClass"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="MetricDimensionsType">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" nillable="true" name="MetricDimension" type="tns:MetricDimensionType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MetricCriteriaType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="storeNumber" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="1" name="workgroup" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="1" name="jobClass" nillable="true" type="xs:string"/>
<xs:element maxOccurs="1" nillable="true" name="dateStart" type="xs:dateTime"/>
<xs:element maxOccurs="1" nillable="true" name="dateEnd" type="xs:dateTime"/>
<xs:element maxOccurs="1" name="dimensions" nillable="true" type="tns:MetricDimensionsType"/>
<xs:element maxOccurs="1" name="metricTypes" nillable="true" type="tns:AvailableMetricsType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MetricType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="businessDate" nillable="true" type="xs:dateTime"/>
<xs:element minOccurs="0" maxOccurs="1" name="store" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="1" name="workgroup" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="1" name="jobClass" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="1" name="metricValue" nillable="true" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MetricsType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Metric" nillable="true" type="tns:MetricType"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="GetMetricsRequestMessage">
<wsdl:part name="parameters" element="tns:GetMetricsRequest"/>
</wsdl:message>
<wsdl:message name="GetMetricsResponseMessage">
<wsdl:part name="parameters" element="tns:GetMetricResponse"/>
</wsdl:message>
<wsdl:portType name="Metric">
<wsdl:operation name="GetMetrics">
<wsdl:input message="tns:GetMetricsRequestMessage"/>
<wsdl:output message="tns:GetMetricsResponseMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MetricService" type="tns:Metric">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="GetMetrics">
<soap:operation soapAction="GetMetrics" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Metric">
<wsdl:port name="GetMetrics" binding="tns:MetricService">
<soap:address location="http://myurl/myproj/1.0/MyService.svc"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
, gracias marc_s,
bien, que parecía funcionar. Solo faltaba una 's' en el tipo de respuesta. DOH!
Ahora el código de servicio parece estar generando bien, pero cuando hojeo a mi servicio no existe un contrato de datos/de xsd y no hay operaciones en el WSDL.
sólo se ve como:
<wsdl:definitions name="MetricServiceImplementation" targetNamespace="http://tempuri.org/">
<wsdl:import namespace="urn:GiantEagle:Services:Systems::Metric:V1_0" location="http://localhost:2814/Services/MetricService.svc?wsdl=wsdl0"/>
<wsdl:types/>
<wsdl:binding name="BasicHttpBinding_MetricService" type="i0:MetricService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
</wsdl:binding>
<wsdl:service name="MetricServiceImplementation">
<wsdl:port name="BasicHttpBinding_MetricService" binding="tns:BasicHttpBinding_MetricService">
<soap:address location="http://localhost:2814/Services/MetricService.svc"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
que se puede esperar que se vea como el WSDL me genera el código de, ¿no?
Creo que esto está relacionado con el hecho de que usted está tratando con tipos complejos – JohnIdol
Cuál es el mensaje de error que está recibiendo – RedDeckWins