Ben kullanıcı / şifre ve sertifika tarafından güvenli bir php web hizmetini çağırmak c # bu kodu kullanıyorum:
string wsurl = ConfigurationManager.AppSettings["Url"];
string wsuser = ConfigurationManager.AppSettings["User"];
string wspass = ConfigurationManager.AppSettings["Pass"];
string url = string.Format(wsurl, param1, param2);
System.Net.CredentialCache oCredentialCache = new System.Net.CredentialCache();
oCredentialCache.Add(new System.Uri(url), "Basic",
new System.Net.NetworkCredential(wsuser, wspass));
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Timeout = TIMEOUT;
req.Credentials = oCredentialCache;
req.Method = "GET";
AttachCert(req);
//Get the data as an HttpWebResponse object
WebResponse resp = req.GetResponse();
Benim devel makineden çalıştırdığınızda bekleniyor ama biz bu sunucuya yüklemek zaman) GetResponse çağrısı (bir zaman aşımı hatası alıyorum gibi çalışır.
The AttachCert() call is where I attach the certificate to the request, and if I comment this line I don't get the timeout but a correct error saying the call could not be completed because of the missing certificate. This is the AttachCert code:
public static void AttachCert(HttpWebRequest Request)
{
// Obtain the certificate.
string certpath = ConfigurationManager.AppSettings["CertPath"];
X509Certificate Cert = X509Certificate.CreateFromCertFile(certpath);
ServicePointManager.CertificatePolicy = new CertPolicy();
Request.ClientCertificates.Add(Cert);
}
Herhangi bir fikir neden bu benim makine üzerinde çalışmak değil, sunucuda ki? Biz webcoder sertifikayı kaldırmak için çalıştı ve beklendiği gibi çalıştı. Yani orada o çağrı garip şey açıkça ama ne bilemiyorum.
Thanks Vicenç