通过HTTPS访问Web服务会产生ArgumentException

时间:2011-09-13 13:59:41

标签: c# .net wcf web-services https

在C#中,我正在尝试访问位于HTTPS地址的Web服务。我的代码在类库中定义,类库使用DLL在主应用程序中引用 - 因此这里不可能使用App.config文件配置Web服务的标准方法。 我的代码基本上等于以下内容:

var remoteAddress = new System.ServiceModel.EndpointAddress(
    "https://myUrl.com/Service.svc");
MyServiceClient myClient = new MyServiceClient(
    new System.ServiceModel.WSHttpBinding(),
    remoteAddress);
myClient.ClientCredentials.ClientCertificate.SetCertificate(
    StoreLocation.CurrentUser,
    StoreName.My,
    X509FindType.FindByThumbprint,
    "91 47 0b e8 80 bf ee 68 32 93 f0 d4 ee e6 14 8c e5 0c fa 3e"
    );
myClient.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 0, 10);
var myResult = myClient.MyMethod("foo bar");

但即使我使用WSHttpBinding,我也会收到带有消息的ArgumentException:

  

提供的URI方案“https”无效;预期'http'。
  参数名称:via

有人能发现问题所在吗?

1 个答案:

答案 0 :(得分:0)

由于您使用的是SSL / TLS,即 https ,因此使用此信息创建WSHttpBinding实例是有意义的。例如。变化

new System.ServiceModel.WSHttpBinding()

要     新的System.ServiceModel.WSHttpBinding(SecurityMode.xxx)

其中 xxx http://msdn.microsoft.com/en-us/library/ms575161.aspx

中定义