C# 具有XElement返回类型的.net webservice

C# 具有XElement返回类型的.net webservice,c#,web-services,C#,Web Services,有一种方法可以使webservice返回XElement类型的参数? 现在我正在使用XmlNode返回类型,但我想放弃使用这个旧的xml库 我用这个: XDocument doc = new XDocument(); XElement xml = new XElement("produtos"); doc.Add(xml); //... var xmlDoc = new XmlDocument(); using (var xmlReader = doc.CreateReader()) {

有一种方法可以使webservice返回XElement类型的参数? 现在我正在使用XmlNode返回类型,但我想放弃使用这个旧的xml库

我用这个:

XDocument doc = new XDocument();
XElement xml = new XElement("produtos");
doc.Add(xml);

//...
var xmlDoc = new XmlDocument();
using (var xmlReader = doc.CreateReader())
{
    xmlDoc.Load(xmlReader);
}
return xmlDoc;

我不明白为什么Web服务不能与XmlLinq库一起工作,您应该能够做到这一点:

[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public XElement GetSomething()
{
    return new XElement("Something");
}

您应该能够做到这一点:

[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public XElement GetSomething()
{
    return new XElement("Something");
}

我使用扩展方法将XElement转换为XmlElement(根据@Ocelot20的建议):

_
公共函数toxmlement(值为XElement)作为xmlement
Dim xmlDoc=新的XmlDocument()
xmlDoc.LoadXml(value.ToString())
返回xmlDoc.DocumentElement
端函数

看起来很好用

我使用扩展方法将XElement转换为XmlElement(根据@Ocelot20的建议):

_
公共函数toxmlement(值为XElement)作为xmlement
Dim xmlDoc=新的XmlDocument()
xmlDoc.LoadXml(value.ToString())
返回xmlDoc.DocumentElement
端函数

看起来很好用

可能重复的可能重复的可能重复的感谢回复我尝试了,但我得到了一个错误:System.InvalidOperationException“无法在架构的顶层使用通配符”此错误仅通过在浏览器上打开asmx页面就可以解决,甚至无法执行。我想可能我的答案有点误导。通过在WebService类上方添加此属性,可以将服务转换为ScriptService:
[System.Web.Script.Services.ScriptService]
。它的行为将不同于您当前的服务,您当前的服务将有一个模式和SOAP响应,但这是一种返回XElement的方法,如果您正试图这么做的话。或者,您可以返回XElement生成的字符串,或者编写一个扩展方法,将XElement转换为XmlNode,并返回应该工作的内容。感谢Ocelot20,我发现了“错误”,我认为是.net或vs上的错误。Web服务运行正常,只是在自动创建的asmx页面上不工作,并且不生成WSDL文件,但Web服务正在运行。我不知道为什么微软还没有把它修好。谢谢你的帮助。谢谢你的回复,我试过了,但我得到了一个错误:System.InvalidOperationException“不能在架构的顶层使用通配符”这个错误是通过在浏览器上打开asmx页面造成的,甚至无法执行。我想我的回答可能有点误导。通过在WebService类上方添加此属性,可以将服务转换为ScriptService:
[System.Web.Script.Services.ScriptService]
。它的行为将不同于您当前的服务,您当前的服务将有一个模式和SOAP响应,但这是一种返回XElement的方法,如果您正试图这么做的话。或者,您可以返回XElement生成的字符串,或者编写一个扩展方法,将XElement转换为XmlNode,并返回应该工作的内容。感谢Ocelot20,我发现了“错误”,我认为是.net或vs上的错误。Web服务运行正常,只是在自动创建的asmx页面上不工作,并且不生成WSDL文件,但Web服务正在运行。我不知道为什么微软还没有把它修好。谢谢你的帮助。