相关疑难解决方法(0)

(尝试)从WSE 3.0迁移到WCF以获取客户端代码

为此,我一直都在网上.我刚刚做了一段时间的恶魔,我试图消费的网络服务供应商拒绝正式支持WCF作为一种消费方法.

我不是网络服务专家,所以我会尽力记录和解释这篇文章,但无论如何,如果你需要的话,请求更多的信息,希望我能够提供任何必要的东西.

服务

在我的公司,我们使用公开服务的供应商应用程序.该应用程序是用java编写的,看起来wsdl是用Apache Axis 1.2创建的.

代码

我的遗留代码使用WSE 3.0.特别是,它使用最后自动添加"WSE"的代理类.这允许我使用更简单的身份验证方案(我可以让它工作的唯一方法).我不需要使用证书.我使用的衍生物SecurityPolicyAssertion,并将其包装在一个Policy传递给SetPolicy客户端类的方法的对象中.以下是创建客户端工作实例所需的全部内容:

MyWebServiceWse api = new MyWebServiceWse();
api.Url = myUrl;
api.SetPolicy(new Policy(new MyDerivedSecurityAssertion(user, pass)));
Run Code Online (Sandbox Code Playgroud)

我的默认,开箱即用的WCF代码(使用服务引用生成)不接受凭据,所以我知道这是一个问题.我已经在网上阅读了关于security在我的网站中使用不同或绑定设置的各种内容app.config,但没有任何内容完全奏效.经过大量修补后,我最常见的错误是WSDoAllReceiver: Request does not contain required Security header.

这是app.config.也许我们可以先告诉我这里应该改变什么来促进传递证书 - 再次,我在网上看到了不同的意见.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="MySoapBinding" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None" …
Run Code Online (Sandbox Code Playgroud)

c# wcf wse web-services

10
推荐指数
1
解决办法
4655
查看次数

标签 统计

c# ×1

wcf ×1

web-services ×1

wse ×1