0

我有一个可以返回带有标签的 xml 的函数,但我想获取我传递的字符串,而不是正文中的任何其他标签,我可以编辑该函数。

 [ServiceBehavior]
    public class HelloService : IHelloService
    {
        public string Greet(string name)
        {
            return "Hello ," + name;
        }
    }
 public class ConsoleMessageInspector : IClientMessageInspector, IDispatchMessageInspector
    {
 public Message CreateMessage(Message message)
        {

            MessageBuffer buffer = message.CreateBufferedCopy(Int32.MaxValue);
            var messageCopy = buffer.CreateMessage();
            Console.WriteLine(messageCopy.ToString());
            return buffer.CreateMessage();

        }
}

XML 实际上我只想要正文中的字符串,没有其他标签是可能的..

{<s:Envelope xmlns:s="schemas.xmlsoap.org/soap/envelope/">; <s:Header>  
 <Action s:mustUnderstand="1" xmlns="schemas.microsoft.com/ws/2005/05/addressing/none">http:/…;   
 </s:Header> <s:Body>   
 <GreetResponse xmlns="tempuri.org/">; <GreetResult>Hello ,wasif</GreetResult>   
 </GreetResponse> </s:Body> </s:Envelope>} 
4

1 回答 1

0

我猜您正在谈论数据的去向:在您的客户端和 WCF 服务器之间交换的消息头或消息正文。

为此,您可以使用数据协定或消息协定。顾名思义,这些是客户端和主机之间的合同(因此双方都需要它们),信息将在嵌入在消息中的特定数据结构中进行交换。

所以在主机上,你要声明你的公共接口,在里面你要声明一个带有数据成员的数据契约,你要给它命名。像这样的东西:

public interface IHostInterface
{
[OperationContract()]
MessageStructure HostConnect(MessageStructure inMsg);
}

[DataContract()]
public class MessageStructure
{
private string HeaderString = null;
private string BodyString = null;
[DataMember(Name = "TextSection", Order = 0)]
public string Text {
    get { return HeaderString ; }
    set { HeaderString = value; }
}

[DataMember(Name = "BodySection", Order = 1)]
public string BodyString {
    get { return BodyString ; }
    set { BodyString = value; }
}
//constructors

public MessageStructure(string HeaderValue, string BodyValue)
{
    if (!string.IsNullOrEmpty(HeaderValue))
        HeaderString = HeaderValue;
    if ((!string.IsNullOrEmpty(BodyValue))
        BodyString = BodyValue;
}
}

然后,当您想从客户端发送请求或从主机响应时,您将使用如下内容:

public class HostInterface: iHostInterface
{
    public MessageStructure HostConnect (MessageStructure inStruct)
    {

    String RequestHeaderText = inStruct.Text;
    String RequestBodyString = inStruct.BodyString;

    String ResponseHeaderText ="cat";
    String ResponseBodyText ="dog";

    MessageStructure outStructure = new MessageStructure(ResponseHeaderText,ResponseBodyText);
    return outStructure;

这是 MSDN 对数据合同的解释的链接

http://msdn.microsoft.com/en-us/library/ms733127.aspx

于 2013-08-21T07:33:18.650 回答