Windows Phone 8.0 上的 HTTPS WCF 服务:无法进行身份验证
Posted
技术标签:
【中文标题】Windows Phone 8.0 上的 HTTPS WCF 服务:无法进行身份验证【英文标题】:HTTPS WCF Service on Windows Phone 8.0 : Cannot authenticate 【发布时间】:2015-08-01 20:47:36 【问题描述】:我的 WP8.0 应用程序出现问题,我想通过 BASIC 身份验证从中访问 HTTPS WCF 服务。
一切都已经在使用 .NET framework 4.5 的 C# 控制台应用程序上运行
工作台应用代码:
App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<bindings>
<basicHttpsBinding>
<binding name="WS_CubicusMobileSOAPBinding">
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="Basic" realm="xxxxxx.xx.xx" />
</security>
</binding>
</basicHttpsBinding >
</bindings>
<client>
<endpoint address="https://xxx.xxx.xx/xxx/awws/xxxxx.awws"
binding="basicHttpsBinding" bindingConfiguration="WS_CubicusMobileSOAPBinding"
contract="ServiceReference1.WS_CubicusMobileSOAPPortType"
name="WS_CubicusMobileSOAPPort" />
</client>
</system.serviceModel>
</configuration>
还有这段 C# 代码:
ServiceReference1.WS_CubicusMobileSOAPPortTypeClient proxy = new WS_CubicusMobileSOAPPortTypeClient();
proxy.ClientCredentials.UserName.UserName = "xxxxxx";
proxy.ClientCredentials.UserName.Password = "xxxxxx";
var e = proxy2.ConnexionTestWP(anObject);
无法使用 WP8.0 代码:
ServiceReferences.ClientConfig :
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="WS_CubicusMobileSOAPBinding" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://xxxxx.xxxxx.xxx/xxxxx/awws/xxxxx.awws"
binding="basicHttpBinding" bindingConfiguration="WS_CubicusMobileSOAPBinding"
contract="ServiceReference1.WS_CubicusMobileSOAPPortType" name="WS_CubicusMobileSOAPPort" />
</client>
</system.serviceModel>
</configuration>
C# 代码与控制台应用程序代码完全相同(除了它是异步的)。
我收到一个 CommunicationException 说“附加信息:远程服务器返回一个错误:NotFound。”
提琴手唯一看到的东西: http://i.stack.imgur.com/VzYhf.png
我听说 Silverlight 客户端需要客户端的 crossdomain.xml 才能工作,所以我将这个文件包含在服务器根目录中。还是不行……
我觉得我尝试了每一个绑定(比如自定义绑定)、每一个 c# 代码(比如手动在 WCF 请求中添加授权标头)、每一种配置等等......没有任何效果。
请帮帮我,我很绝望!
【问题讨论】:
【参考方案1】:您在 Windows Phone 中使用 basicHttpBinding
,但在控制台应用程序中使用 basicHttpsBinding
。你关闭了服务器上的http
吗?
【讨论】:
您好,谢谢您的回答。 silverlight .NET 子网(在这种情况下为 WP8.0)上不存在 basicHttpsBinding。反正根据MSDN,basicHttpBinding也可以处理HTTPS。以上是关于Windows Phone 8.0 上的 HTTPS WCF 服务:无法进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Windows Phone 8.0 DLL 是不是与 Windows Phone 8.1 应用程序兼容?
使用 c# 为 windows phone 8.0 编程录音机
从 winForms 移植到 Windows phone 8.0 C#
在 Windows Phone 8.0 地图上绘制路线的问题 - 0x8004231C