Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 通过SSL(https)和#x2B使用Monotouch的WCF服务;碱基结合_Iphone_Wcf_Ssl_Https_Xamarin.ios - Fatal编程技术网

Iphone 通过SSL(https)和#x2B使用Monotouch的WCF服务;碱基结合

Iphone 通过SSL(https)和#x2B使用Monotouch的WCF服务;碱基结合,iphone,wcf,ssl,https,xamarin.ios,Iphone,Wcf,Ssl,Https,Xamarin.ios,我目前正在编写一个iphone应用程序,它将通过安全连接(SSL/https)使用WCF服务。在通过http进行本地测试时,我成功地使用了该服务 现在我们想确保服务是安全的,所以我们已经设置了一个带有正确签名证书的UAT服务器来运行我们的测试 我们使用的是自定义绑定,再加上安全模式TransportWithMessageCredentials,它需要ClientCredentials属性中的用户名/密码 使用SISvcUtil.exe 当我尝试从iPhone调用此安全服务时,我得到一个相当可爱的

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

现在我们想确保服务是安全的,所以我们已经设置了一个带有正确签名证书的UAT服务器来运行我们的测试

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

使用
SISvcUtil.exe

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

异步操作中出现异常:System.Net.WebException:处理web请求时出错:状态代码500(内部服务器错误)
()

我已尝试使用以下命令隐式接受证书:
ServicePointManager.ServerCertificateValidationCallBack=(发送方、证书、链、ssl)=>true
但这只是返回相同的500错误


同样的代码在windows机器上非常有效,但在iphone上却不行。是否有其他人遇到此问题和/或知道解决方案

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


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

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

所以在撰写本文时,MonoTouch似乎不太支持WCF(它目前有一个基本的实现)


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

这是一个关于生成Monotouch中使用的代理的wiki条目,我还让这个代理为http工作;所以我倾向于说这不是问题所在。您是否在服务器上启用了WCF跟踪以查看WCF管道内部可能发生的情况?这将帮助您诊断由传输而不是应用程序级代码引起的任何错误。我也遇到了同样的问题。我用slsvcuti.EXE生成了代理。我也在使用自签名证书。我想知道你是否找到了一个替代的解决方案?很抱歉回复太晚-我们使用的方法与你的方法类似。使用SLSVCUTIL生成代理,然后创建我们自己的自定义绑定(基于
BasicHTTPBinding
)。我们通过HTTPS进行所有通信(我们最终购买了一个合适的证书,因为手机无法使用自签名证书)。对不起,我帮不上忙了!