Различия между клиентами веб-сервисов, написанными на .net2.0 и .net4.0C#

Место общения программистов C#
Ответить
Anonymous
 Различия между клиентами веб-сервисов, написанными на .net2.0 и .net4.0

Сообщение Anonymous »

У меня проблема с использованием веб-сервиса Java через SSL.
У меня есть два подхода: один с .net4.0 и один с .net2.0.
К сожалению, подход .net4.0 не сработал. Однако более ранняя версия (2.0) работает корректно:

Код: Выделить всё

class Program
{
static void Main(string[] args)
{
try
{
Srv.Service client = new Srv.Service ();
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
string findValue = "IssuerName";
X509Certificate2Collection certsCollection = store.Certificates.Find(X509FindType.FindByIssuerName, findValue, false);

X509Certificate2 cert;
if (certsCollection.Count > 0)
{
cert = certsCollection[0];
client.ClientCertificates.Add(cert); // Only in .net 2.0
}

client.MethodA();

}
catch (Exception e)
{
string msg = e.Message;
}
}
}
После этого я сделал нечто подобное в клиенте .net4.0 (выдает исключение «Не удалось установить безопасный канал для SSL/TLS с полномочиями {server_name}»):

Код: Выделить всё

class Program
{
static void Main(string[] args)
{
try
{
Srv.ServiceClient srv = new Srv.ServiceClient();
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
string findValue = "IssuerName";
X509Certificate2Collection certsCollection = store.Certificates.Find(X509FindType.FindByIssuerName, findValue, false);

X509Certificate2 cert;
if (certsCollection.Count > 0)
{
cert = certsCollection[0];
srv.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2();
srv.ClientCredentials.ClientCertificate.Certificate = cert;
}

client.MethodA();
}
catch (Exception e)
{
string msg = e.Message;
}
}
}
Почему почти тот же код работает в 2.0 и выдает исключение в 4.0?
Или, может быть, я делаю это неправильно во втором примере?
Переопределение ServicePointManager.ServerCertificateValidationCallback не помогло...

Почему я не могу добавить сертификат пользователя методом Добавить в 4.0, как это сделано в рамках 2.0?

Изменить:
Я не использую IIS. Я использую веб-сервис, размещенный на JBoss.

Во втором примере я получаю следующее исключение:


Не удалось установить безопасный канал для SSL/TLS с полномочиями {server_name


Подробнее здесь: https://stackoverflow.com/questions/859 ... and-net4-0
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»