如何从C#中的URL读取WCF服务的WSDL

时间:2017-05-04 01:32:39

标签: c# .net wcf wsdl

我尝试从URL读取WSDL以动态生成WCF服务的代理。 这是我的代码:

XmlTextReader xmlTextReader = new XmlTextReader(new StringReader(description)) 
if (ServiceDescription.CanRead(xmlTextReader))
{
    ...
}

我从方法XmlException获得ServiceDescription.CanRead
错误按摩是" 根级别的数据无效。第1行,第1位"。

在IE中浏览WDSL网址,我可以在标记<wsdl:definitions ...> ... </wsdl:definitions>之前的开头看到以下标记,但不会出现在Chrome中。

<?xml version="1.0" encoding="UTF-8"?>

这可能是问题吗?但我想ServiceDescription.CanRead应该能够认识到这一点。任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:1)

尝试在问题中包含的第一行之前添加此内容:

var byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble());
if (description.StartsWith(byteOrderMarkUtf8))
{
    var lastIndexOfUtf8 = byteOrderMarkUtf8.Length - 1;
    description = description.Remove(0, lastIndexOfUtf8);
}

借鉴here