我正在尝试WCF,并构建了一个具有id和name参数的标准产品类,我的目标是从休息中接收它并返回状态。
[DataContract]
public partial class Product {
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
}
[DataContract]
public class Message
{
[DataMember]
public bool isSucceed { get; set; }
}
使用相对于Post方法的
[WebInvoke(UriTemplate = "ProductPingXML", Method = "POST",
RequestFormat = WebMessageFormat.Xml)]
[Description("Recive Post Message")]
public Message PingXmlProduct(Product Input)
{
Message message = new Message();
//Todo Capture what rest send
if (Input == null)
{
message.isSucceed = false;
}
else
{
message.isSucceed = true;
}
// strip the xml from the body
// Assign the values to the new obj class Product
return message;
}
我正尝试使用XML帮助架构中的XML通过邮递员来调用它。
<Product xmlns="http://schemas.datacontract.org/2004/07/RestML.Data">
<Id>2147483647</Id>
<Name>String content</Name>
</Product>
与WCF的合作对我来说还比较陌生,所以我在这里可能会错过一些东西。所以我的问题是: 如何在PingXmlProduct中接收邮递员XML并将相应的值分配给新的obj;
答案 0 :(得分:0)
我们应该使用webhttpbinding创建Restful风格的WCF服务。请参考以下配置。
<system.serviceModel>
<services>
<service name="Server1.MyService">
<endpoint address="" binding="webHttpBinding" contract="Server1.IService" behaviorConfiguration="rest"></endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:5577"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="rest">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
然后我们应该指定webmessagebodystyle。
[OperationContract]
[WebInvoke(BodyStyle =WebMessageBodyStyle.Bare)]
void GetData(Product product);
假设存在以下定义。
[DataContract]
public class Product
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Name { get; set; }
}
我们可以按照以下方式在Postman中调用该服务(请注意自定义类的名称空间)。
请参考我以前与WebMessageBodyStyle属性有关的答复。
Get the object is null using JSON in WCF Service
随时让我知道问题是否仍然存在。