Отправка сертификата клиента через HttpWebRequest, периодически работает - PullRequest
2 голосов
/ 08 октября 2010

Я создал веб-приложение, которое вызывает веб-службу, для которой требуется сертификат клиента для аутентификации.Вот фрагмент того, как я строю запрос:

            // Grab Certificate
            X509Certificate2 cert2 = new X509Certificate2(AppDomain.CurrentDomain.BaseDirectory + GiftCardConfig.A2A_CertificateLocation, GiftCardConfig.A2A_CertificatePassword, X509KeyStorageFlags.MachineKeySet);

            // First Call Status Account
            StringBuilder urlStatus = new StringBuilder(GiftCardConfig.A2A_URL + "webservice.asp?");
            urlStatus.Append("userid=" + GiftCardConfig.A2A_UserID);
            urlStatus.Append("&pwd=" + GiftCardConfig.A2A_Password);
            urlStatus.Append("&sourceid=" + GiftCardConfig.A2A_SourceID);
            urlStatus.Append("&cardnum=" + cardNumber);
            urlStatus.Append("&purseno=" + GiftCardConfig.A2A_PurseID);

            urlStatus.Append("&status=ACTIVATE");

            // Build HTTP Request
            HttpWebRequest wrStatus = (HttpWebRequest)WebRequest.Create(urlStatus.ToString());
            wrStatus.KeepAlive = true;
            wrStatus.Method = "GET";
            wrStatus.Accept = "text/xml";
            wrStatus.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)";
            wrStatus.ClientCertificates.Clear();
            wrStatus.ClientCertificates.Add(cert2);

Это все работает, но только периодически.Примерно каждые 24 часа Сервер, на котором размещается веб-служба, выдает ошибку 403: Запрещено.Единственный способ исправить это - выполнить iisreset сервера, на котором запущено веб-приложение.Мы полностью озадачены этой проблемой и хотели бы знать, связана ли эта проблема с веб-приложением или конфигурацией сервера, на котором оно размещено.

Ответы [ 2 ]

1 голос
/ 08 октября 2010

Вы можете попытаться установить для параметра keep alive значение false, хотя это может привести к снижению производительности.

0 голосов
/ 01 августа 2012

Просто на случай, если кто-нибудь еще столкнется с этим.Мы так и не определили причину, однако переустановка .NET Framework на сервере, похоже, «решила» проблему.Хотя это и не идеально, это впервые произошло за 5 лет, поэтому достаточно доволен нашим решением на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...