我是消费Web服务的新手,我必须访问一个运行状态的Web服务。 我获得了app.config文件,证书文件(.cer)和一些一般性说明。
Haven'n之前使用的是Visual Studio 2008 Express,但我有15年编写vb5 / 6代码的经验。
无论如何,我使用mmc安装了.cer文件,然后打开了一个新项目 我添加了System.Runtime.Serialization和System.ServiceModel 我添加了一个WSDL链接的服务引用 我在项目中包含了app.config文件 并编写了以下代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EchoSvcClientConsAppl
{
class Program
{
static void Main(string[] args)
{
ConAp66.myserviceref.ServiceClient clientProxy = new ConAp66.myserviceref.ServiceClient();
clientProxy.ClientCredentials.UserName.UserName = "xx";
clientProxy.ClientCredentials.UserName.Password = "xx";
clientProxy.Open();
if (clientProxy != null)
System.Console.WriteLine("init succeeded ");
else
System.Console.WriteLine("init error");
String ar1 = "xxx";
String ar2 = "xxx";
String ar3 = "xxx";
ConAp66.myserviceref.eRes r = clientProxy.getRes1(ar1, ar2, ar3);
if (r.status != null)
System.Console.WriteLine("ok");
else
System.Console.WriteLine(r.error);
clientProxy.Close();
System.Console.ReadLine();
}
}
}
我在网上收到错误: ConAp66.myserviceref.eRes r = clientProxy.getRes1(ar1,ar2,ar3);
说我有令牌身份验证问题
任何线索??? 非常感谢您的帮助,因为我真的不知道该怎么做......
更新
我在app.config中添加了跟踪并得到了:
安全处理器无法在邮件中找到安全标头。 这可能是因为消息是一个不安全的故障或因为那里 是沟通方之间的约束性不匹配。 如果为安全性和客户端配置了服务,则会发生这种情况 不使用安全性。
经过一些谷歌搜索,我发现应该放 enableUnsecuredResponse = “真” 在我的app.config 中我做到了,但什么都没发生
答案 0 :(得分:0)
我认为您需要接受证书服务器,如下所示。
public static bool CertHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors error)
{
// Says that you accept the certificate.
// In production environment you have to really check if you can accept the certificate.
return true;
}
ServicePointManager.ServerCertificateValidationCallback = CertHandler;
在代理创建之前添加这些行。
ServicePointManager类的命名空间是System.Net。
X509Certificate类的命名空间是System.Security.Cryptography。