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

在 32 位操作系统上安装了 windows phone sdk 8.0 但不起作用?

如何使用 WCF 调用从客户端 windows phone 8.0 silverlight 返回对象的方法