C# 如何从C中的URL读取WCF服务的WSDL#
我正在尝试从URL读取WSDL,以便为WCF服务动态生成代理。 这是我的代码:C# 如何从C中的URL读取WCF服务的WSDL#,c#,.net,wcf,wsdl,C#,.net,Wcf,Wsdl,我正在尝试从URL读取WSDL,以便为WCF服务动态生成代理。 这是我的代码: XmlTextReader xmlTextReader = new XmlTextReader(new StringReader(description)) if (ServiceDescription.CanRead(xmlTextReader)) { ... } 我从方法servicescription.CanRead中得到一个XmlException,错误信息是“根级别的数据无效。第1行,位置1”
XmlTextReader xmlTextReader = new XmlTextReader(new StringReader(description))
if (ServiceDescription.CanRead(xmlTextReader))
{
...
}
我从方法servicescription.CanRead
中得到一个
XmlException
,错误信息是“根级别的数据无效。第1行,位置1”
在IE中浏览WDSL URL时,我可以在标记之前的开始处看到以下标记代码>不在chrome中显示
这可能是问题所在吗?但是我想,servicescription.CanRead
应该能够识别这一点。如有任何提示,我们将不胜感激。请尝试在问题的第一行之前添加以下内容:
var byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble());
if (description.StartsWith(byteOrderMarkUtf8))
{
var lastIndexOfUtf8 = byteOrderMarkUtf8.Length - 1;
description = description.Remove(0, lastIndexOfUtf8);
}
借用自。如何检查正在读取的XMLCanRead
只是在XmlSerializer的内部实例上调用CandSerialize
并返回该值。您在IE中看到的xml声明是可选的,但有效。这可能就是它——一个额外的隐藏字符,它阻止了XML的解析。试着把我的答案中的代码粘贴到你文章的第一行代码上面。我不知道这是否是本例中的修复方法,但也许值得一试。我最初删除了它,因为它主要是从其他人对另一个问题的回答中复制粘贴的,只需进行一些小的编辑。我会在OP有机会尝试后再次删除它。谢谢Scott,这就是问题所在。现在修好了!