Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从C中的URL读取WCF服务的WSDL#_C#_.net_Wcf_Wsdl - Fatal编程技术网

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

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”

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

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);
}

借用自。

如何检查正在读取的XML
CanRead
只是在XmlSerializer的内部实例上调用
CandSerialize
并返回该值。您在IE中看到的xml声明是可选的,但有效。这可能就是它——一个额外的隐藏字符,它阻止了XML的解析。试着把我的答案中的代码粘贴到你文章的第一行代码上面。我不知道这是否是本例中的修复方法,但也许值得一试。我最初删除了它,因为它主要是从其他人对另一个问题的回答中复制粘贴的,只需进行一些小的编辑。我会在OP有机会尝试后再次删除它。谢谢Scott,这就是问题所在。现在修好了!