首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceStack SOAP1.2 HTTPS客户端

ServiceStack SOAP1.2 HTTPS客户端
EN

Stack Overflow用户
提问于 2015-05-16 14:00:05
回答 2查看 1.2K关注 0票数 9

我有一个基于ServiceStack的Soap客户端,它为HTTP正确操作,但是当我尝试使用HTTPS时,它会给我带来这个错误

代码语言:javascript
复制
ServiceStack.WebServiceException: The provided URI scheme 'https' is invalid; ex
pected 'http'.
Parameter name: via ---> System.ArgumentException: The provided URI scheme 'http
s' is invalid; expected 'http'.
Parameter name: via
   at System.ServiceModel.Channels.HttpChannelFactory`1.ValidateCreateChannelPar
ameters(EndpointAddress remoteAddress, Uri via)
   at System.ServiceModel.Channels.HttpChannelFactory`1.OnCreateChannelCore(Endp
ointAddress remoteAddress, Uri via)
   at System.ServiceModel.Channels.ChannelFactoryBase`1.InternalCreateChannel(En
dpointAddress address, Uri via)
   at System.ServiceModel.Channels.ServiceChannelFactory.ServiceChannelFactoryOv
erRequest.CreateInnerChannelBinder(EndpointAddress to, Uri via)
   at System.ServiceModel.Channels.ServiceChannelFactory.CreateServiceChannel(En
dpointAddress address, Uri via)
   at System.ServiceModel.Channels.ServiceChannelFactory.CreateChannel(Type chan
nelType, EndpointAddress address, Uri via)
   at System.ServiceModel.ChannelFactory`1.CreateChannel(EndpointAddress address
, Uri via)
   at System.ServiceModel.ClientBase`1.CreateChannel()
   at System.ServiceModel.ClientBase`1.CreateChannelInternal()
   at System.ServiceModel.ClientBase`1.get_Channel()
   at ServiceStack.WcfServiceClient.Send(Message message)
   at ServiceStack.WcfServiceClient.Send[T](Object request)
   --- End of inner exception stack trace ---
   at ServiceStack.WcfServiceClient.Send[T](Object request)
   at ElectronicServiceInterface.ESIClient.Login()

我使用的是自签名证书,但我可以使用curl成功地调用我的Soap服务。对我来说,这表明问题在客户端。

我的代码是这样的

代码语言:javascript
复制
using (var client = new Soap12ServiceClient(Uri))
{
    var request = new MyRequestObject { Username = Username, Password = Password };
    var response = client.Send<MyResponseObject>(request);
}

上面的示例显示了请求/响应DTO类的用法。

如果不使用配置文件(只使用代码),我需要做什么才能使它与HTTPS一起工作呢?

EN

回答 2

Stack Overflow用户

发布于 2015-05-21 06:51:23

我相信您的问题是在您的配置文件,尝试添加到绑定标签。关于这个ServiceStack.IntegrationTests,你应该有

代码语言:javascript
复制
<bindings>
            <basicHttpBinding>
                <binding name="Endpoint_BasicHttpBinding" />
            </basicHttpBinding>
            <wsHttpBinding>
                <binding name="Endpoint_WsHttpBinding">
                    <security mode="None">
                        <transport clientCredentialType="None" />
                        <message establishSecurityContext="false" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>

但是在这个测试中,它只被配置为在HTTP上工作,而不是HTTPS,所以您所要做的就是将<transport clientCredentialType="None" />更改为<transport clientCredentialType="transport" />

票数 6
EN

Stack Overflow用户

发布于 2015-05-26 15:48:47

您需要有两个单独的基址,一个用于HTTP,一个用于HTTPS。

您可以在配置文件中或在执行宿主的代码中定义它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30276585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档