gpt4 book ai didi

c# - Xamarin + WCF + SSL + 传输 + 证书

转载 作者:太空宇宙 更新时间:2023-11-03 12:37:38 25 4
gpt4 key购买 nike

我有一个 Net Framework 4.5 WCF 服务,使用异步/任务方法运行。它部署在有效的 URL 上,具有正确的 Digicert 证书,确保域。我们有一个“客户端证书”,具有“一对一”映射,并且对于我们的“Winforms”应用程序来说一切正常。现在,我们不想从我们的 Android/iOS Xamarin 项目中调用它。我们知道 Xamarin 不支持 wsBinding,所以我们使用这个配置:

服务器

<system.serviceModel>
<services>
<service
name="serviceWCF.nameService"
behaviorConfiguration="behavior_base">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="transport"
contract="serviceWCF.nameInterfaceService" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="transport">
<security mode="Transport" >
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="behavior_base">
<serviceMetadata httpsGetEnabled="true" httpsGetUrl=""/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

我们从 SVCUTIL.EXE 创建了一个代理,然后我们手动实现了异步方法、 channel 创建,因为 Xamarin 不支持动态绑定(bind),等等。

我们的 Xamarin 客户端应用程序的代理,它是这样调用的:

BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
AddressHeader addressHeader2;
AddressHeader[] addressHeaders;
EndpointAddress endpoint;

addressHeader2 = AddressHeader.CreateAddressHeader("nameapp_iOS", "https:\\URL_WCF_Service.svc", 0);
addressHeaders = new AddressHeader[]{ addressHeader2};
endpoint = new EndpointAddress(new System.Uri("https:\\URL_WCF_Service.svc"),addressHeaders);

System.Security.Cryptography.X509Certificates.X509Certificate2 oCert;
oCert = new System.Security.Cryptography.X509Certificates.X509Certificate2(System.IO.File.ReadAllBytes("CertBundle.pfx"), "pass");

Service_MovilClient oProxy = new Service_MovilClient(binding, endpoint);
Service_MovilClient oProxy.ClientCredentials.ClientCertificate.Certificate = oCert

但是……没有任何反应……超时……

服务器没问题。可以从 iOS 模拟器访问该 url。我们只能将它与“basicHttpBinding”一起使用,但是,我们想使用 SSL+客户端证书。

有什么想法吗?现在我卡住了。

最佳答案

破坏再多的努力也无济于事。到目前为止,WCF Xamarin 非常短。我必须接受 HTTPs 和基本的传输安全(安全模式 =“传输”)。

我必须使用那个 Wcf 服务……但是如果你,可怜的人,正在阅读这个之前的新开发,请使用 REST 服务。他们有更好的 Xamarin 支持。

关于c# - Xamarin + WCF + SSL + 传输 + 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40299132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com