通过SSL(https)+ basicHttpBinding使用Monotouch来使用WCF服务

时间:2010-09-27 09:59:37

标签: iphone wcf ssl https xamarin.ios

我目前正在编写一个iphone应用程序,它将通过安全连接(SSL / https)使用WCF服务。我通过http在本地测试时设法使用此服务。

现在我们要确保服务是安全的,因此我们设置了一个带有正确签名证书的UAT服务器来运行我们的测试。

我们正在使用自定义绑定,加上安全模式TransportWithMessageCredentials,需要ClientCredentials属性中的用户名/密码。

使用SISvcUtil.exe

生成代理

当我尝试从iPhone调用此安全服务时,我得到了一个相当可爱的通用错误:

Exception in async operation: System.Net.WebException: There was an error on processing web request: Status code 500(internal server error)Here is a pastebin of full exception)。

我尝试使用以下方式隐式接受证书: ServicePointManager.ServerCertificateValidationCallBack = (sender, cert, chain, ssl) => true; 但这只会返回相同的500错误。

相同的代码在Windows机器上运行良好,但在iphone上运行不正常。有没有其他人遇到过这个问题和/或知道它的解决方案?

3 个答案:

答案 0 :(得分:1)

这可能是monotouch中的一个错误,它可能没有使用SISvcUtil.exe完全实现生成的代理,您是否尝试生成一个mac应用程序并在Mac上测试它?

monotouch是否有任何有关WCF代理支持的文档示例?如果它们没有那么可能它可能不起作用,monotouch不提供.NET运行时,而是实际上将所有内容编译为本机ios二进制文件。因此,如果未正确转换WCF代理,则无法正常工作。

答案 1 :(得分:1)

因此,在撰写本文时,Monotouch似乎不能很好地支持WCF(它目前有一个准系统实现)。

由于这一点,以及围绕我们的网络服务需要良好的安全性,我们决定采用不同的方式;每次调用Web服务时,通过安全的加密SSL连接通过用户名+密码验证用户。我们使用Silverlight 3.0 SiSUtil.exe生成Web服务的绑定,而不是将其作为Web引用包含在项目中。

答案 2 :(得分:0)

通常在收到内部服务器错误时,我发现原因是请求中发送的HTTP标头存在问题。我没有在MonoTouch上使用WCF,所以我不确定实现。