【问题标题】:Universal windows platform - Consuming web service, ASMX (Content type parsing)通用windows平台——消费web服务,ASMX(内容类型解析)
【发布时间】:2016-11-22 13:35:33
【问题描述】:

我开始使用 UWP,并希望使用用 VB.Net 2.0 编写的旧的、大量使用的 ASMX Web 服务。

我创建了一个对 Web 服务的服务引用,但是无论我调用什么函数,我总是以错误告终

“在 mscorlib.ni.dll 中发生了“System.PlatformNotSupportedException”类型的异常,但未在用户代码中处理

补充信息:不支持MessageEncoder内容类型解析。"

没有比这更进一步的帮助了,不确定是不是因为返回类型是 XML 并且它期待 JSON 或其他东西,即使是这种情况我也看不到任何地方可以改变它。

这是我用来撤回简单回复的相关行,非常感谢您的帮助。

WSSoapClient proxy = new WSSoapClient();
Guid ProviderGUID = Guid.Parse("[REDACTED]");
string ProviderPassword = "[REDACTED]";
objWSEthnicitiesGetReturn result;
result = await proxy.WSEthnicitiesGetAsync(ProviderGUID, ProviderPassword);

【问题讨论】:

  • 此异常可能是 System.Net.HttpClient 中设置的 NetworkCredentials 对象引起的 - UWP 不支持,您可以使用 Windows.Web.Http.HttpClient 和 PasswordCredential 代替。
  • 我认为我们需要更多地了解服务的架构,然后才能知道这里发生了什么。是WCF吗?像数据服务这样的 WCF 子集?您从哪个命名空间获取 WSSoapClient,它来自服务引用吗?如果没有,它应该是。您的服务确定使用 SOAP 吗?
  • 只有这几行代码很难知道原因。如果能提供minimalrepeat项目就更好了。

标签: c# .net web-services uwp


【解决方案1】:

我发现了问题,而 W/S 正在使用 HTTP... 在使用过程中,端点已更改为 HTTP。现在,虽然 IIS 中有重定向,但这会导致查找始终返回 301 错误。

在服务参考的参考文件中,我必须更改 proc GetBindingForEndpoint 以包含以下行

result.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.None;
result.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.Transport;

在将引用引入项目的同时,.NET 还将对 HTTPS 的所有引用更改为 HTTP,因此我必须搜索整个项目中的所有实例并手动更改它们。

现在一切都很好,谢谢你们的时间。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 2018-12-07
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多