-1

我想连接到此地址上的 Web 服务: https ://webapp2.rzzo.rs/rzzo/RzzoService?wsdl 我在我的 .net 4.0 C# 应用程序中添加了对它的服务引用。这是我用来连接到这个服务的代码:

 ServiceReference1.RzzoServiceClient client = new ServiceReference1.RzzoServiceClient();
            client.ClientCredentials.UserName.UserName = "------";
            client.ClientCredentials.UserName.Password = "-------";
            bool check = client.CheckConnection();

这是我必须得到的消息(我从我的服务提供商那里得到的):

 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-
utility-1.0.xsd">
    <s:Header>
        <o:Security s:mustUnderstand="1"
xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-
secext-1.0.xsd">
            <o:UsernameToken u:Id="uuid-cdf8690a-e56a-4efa-923c-760d22b6748d-7">
                <o:Username>username</o:Username>
                <o:Password>password</o:Password>
            </o:UsernameToken>
        </o:Security>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <GetInsuranceDataF xmlns="http://service.rzzo.rs/">
            <req xmlns="">
                <lbo/>
                <zk>11111111111</zk>
            </req>
        </GetInsuranceDataF>
    </s:Body>
</s:Envelope>

但我无法连接到服务。请帮忙

4

1 回答 1

0

好吧,您首先要检查 WSDL 和/或服务文档以找出需要什么身份验证。

WSDL 建议“WSS11”“sp:SignedEncryptedSupportingTokens”,幸运的是证书要求似乎已关闭。

MSDN 知道这个方案: http: //msdn.microsoft.com/en-us/library/aa738565.aspx
section 3.1.1 UsernameOverTransport,所以应该支持。

设置用户名和密码应该很简单:

var svc = new SomethingServiceClient(); // your proxy class generated from WSDL
svc.ClientCredentials.UserName.UserName = "someUsername";
svc.ClientCredentials.UserName.Password = "somePassword";

这正是你所说的你正在尝试的,所以这很奇怪。

您是否 100% 确定用户名和密码有效并且该帐户未被禁用?既然你得到了合理的回应,我敢打赌这就是问题所在。

如果它抱怨某些配置或绑定不匹配,请检查您的 serviceclient 配置(可能位于 yourapp.config 中)并确保它在binding标签内写入了正确的安全类型,例如<security authenticationMode="UserNameOverTransport" />. 但它没有抱怨..

您是否 100% 确定用户名和密码有效并且该帐户未被禁用?既然您得到了合理的回应,我敢打赌这就是问题所在。我只是惊讶地看到错误消息中的“令牌”一词。也许有一些身份验证令牌要从服务器接收,并且必须在每次身份验证尝试时传回,比如 http cookie?尝试检查服务的文档。

于 2013-06-27T09:58:43.720 回答