Cha*_*hau 9 c# wcf xml-serialization
我用一个方法创建了一个WCF服务,该方法返回一个System.Xml.XmlElement:
接口:
[ServiceContract]
public interface IWCFService
{
[OperationContract]
XmlElement Execute(...);
}
Run Code Online (Sandbox Code Playgroud)
服务:
public XmlElement Execute(...)
{
XmlNode node = ...;
return (XmlElement)node;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试访问我的服务器上部署的服务时
WCFServiceClient service = new WCFServiceClient("WSHttpBinding_IWCFService");
XmlElement node = service.Execute(...);
Run Code Online (Sandbox Code Playgroud)
我收到错误:
无法将类型'System.Xml.Linq.XElement'隐式转换为'System.Xml.XmlElement'
搜索我的服务解决方案,我看不到任何参考System.Xml.Linq.XElement.期待一个System.Xml.XmlElement或者是VS 2010和我一起玩是不是错了?
小智 21
我发现的最好和最简单的方法是右键单击服务引用,然后单击"配置服务引用".进入底部的对话框后,您将看到2个单选按钮,表示"在所有引用的程序集中重用类型"或"在指定的引用程序集中重用类型".单击"指定程序集"的第二个选项.然后将启用列表框,您可以检查所有程序集并取消选中System.Xml.Linq .这样,每次更新服务引用时,您都将获得预期的结果,并将其存储在客户端的配置中.
Cha*_*hau -1
我不想回答我自己的问题,但事情是这样的:
据我所知,System.Xml.XmlElementCAN 可以用作 WCF 服务的返回类型。DataContractSerializerWCF 中默认使用的确实支持此类型,因此不需要使用XmlSerializer.
然而,我的问题与序列化无关,但感谢Raj Kaimal提出了这种可能性。
我遵循了微软提供的WCF教程,它告诉你当你想使用该服务时将WCF服务添加为服务引用。这在 VS2008 中似乎没问题,但是当切换到 VS2010 时,这种方法将返回类型从System.Xml.XmlElement(较新的?)更改为System.Xml.Linq.XElement. 要解决此问题,您需要将该服务添加为Web 引用。
| 归档时间: |
|
| 查看次数: |
14196 次 |
| 最近记录: |