我试图调用在我的asp.net Web应用程序项目中运行的Web服务。我只是搜索谷歌的错误信息,发现很多链接。所有人都说你的网络服务返回错误。
以下我尝试调用Web服务的方式。
我在win表单中添加了Web服务的服务引用,并在下面进行了调用。
ServiceReference1.SearchDataIndexSoapClient Client = new ServiceReference1.SearchDataIndexSoapClient();
ServiceReference1.AuthHeader authHead = new ServiceReference1.AuthHeader();
authHead.Password = "Admin";
authHead.Username = "Admin";
Console.WriteLine(client.StartIndex(authHead));
最后一行返回服务器500错误,详细信息文本如"内容类型text / html; charset =响应消息的UTF-8与绑定的内容类型不匹配(text / xml; charset = utf-8)"
我使用HttpWebRequest类在没有代理的情况下调用我的Web服务,然后也得到相同的错误。
尝试由fiddler打电话。只需提供网络服务网址和正文。获取相同的错误消息,但是当我从fiddler指定内容类型text / xml时,我看到Web服务正常工作并返回正确的结果。
所以只是无法理解我可以通过fiddler正确调用我的Web服务但是当我尝试通过HttpWebRequest调用或添加Web引用然后收到错误。我在使用HttpWebRequest类时也设置了内容类型= text / xml,但没有运气。
请帮助我理解这个问题,并指导我如何修复它,以便通过HttpWebRequest类或Web引用进行调用。感谢
答案 0 :(得分:0)
正如您在网络上看到的那样,Web服务正在抛出错误是正确的。您收到的有关内容类型的异常是因为当客户端的Web服务引用期望(text / xml)时,错误服务会显示HTML页面(text / html)。希望有意义!
根本原因是您的Web服务出错。从您的代码中,您可以确认您的Web服务方法是否期望AuthHeader类型的参数,或者是否在SoapHeader中是预期的。
如果期望参数类型为AuthHeader,请在Web服务方法中放置断点或记录以进一步调试。