C# 如何获取从webservice请求返回的原始xml?

C# 如何获取从webservice请求返回的原始xml?,c#,xml,web-services,C#,Xml,Web Services,有人知道一种获取查询Web服务返回的原始xml的简单方法吗 我已经看到了一种通过via实现这一点的方法,但我不希望增加依赖性。您有两种实际选择。您可以创建一个SoapExtension,该扩展将插入响应流并检索原始XML,也可以更改代理存根以使用XmlElement检索原始值,以便在代码中进行访问 对于要在此处查看的SoapExtension: 对于您想在这里查看的XmlElement:因此,以下是我最终的操作方式。场景是,用户单击一个按钮,希望看到Web服务返回的原始XML。这会给你这个。我最

有人知道一种获取查询Web服务返回的原始xml的简单方法吗


我已经看到了一种通过via实现这一点的方法,但我不希望增加依赖性。

您有两种实际选择。您可以创建一个SoapExtension,该扩展将插入响应流并检索原始XML,也可以更改代理存根以使用XmlElement检索原始值,以便在代码中进行访问

对于要在此处查看的SoapExtension:


对于您想在这里查看的XmlElement:

因此,以下是我最终的操作方式。场景是,用户单击一个按钮,希望看到Web服务返回的原始XML。这会给你这个。我最终使用xslt删除生成的名称空间。如果不这样做,XML中就会出现一堆令人讨厌的名称空间属性

        // Calling the webservice
        com.fake.exampleWebservice bs = new com.fake.exampleWebservice();
        string[] foo = bs.DummyMethod();

        // Serializing the returned object
        System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(foo.GetType());
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        x.Serialize(ms, foo);
        ms.Position = 0;

        // Getting rid of the annoying namespaces - optional
        System.Xml.XPath.XPathDocument doc = new System.Xml.XPath.XPathDocument(ms);
        System.Xml.Xsl.XslCompiledTransform xct = new System.Xml.Xsl.XslCompiledTransform();
        xct.Load(Server.MapPath("RemoveNamespace.xslt"));
        ms = new System.IO.MemoryStream();
        xct.Transform(doc, null, ms);

        // Outputting to client
        byte[] byteArray = ms.ToArray();
        Response.Clear();
        Response.AddHeader("Content-Disposition", "attachment; filename=results.xml");
        Response.AddHeader("Content-Length", byteArray.Length.ToString());
        Response.ContentType = "text/xml";
        Response.BinaryWrite(byteArray);
        Response.End();

我是否正确理解您得到反序列化对象并将其序列化回来,即它不是服务返回的原始xml数据?