В частности, мне нужно проверить входящий сертификат безопасности X.509 на базу данных, чтобы разрешить доступ к моей веб-службе. Для этого мне нужно получить копию сертификата, отправленного клиентом. Я думаю, что знаю, как это сделать, если я смогу понять, как получить доступ к объекту HTTP-запроса - внутреннему объекту ASP.NET.
Я нашел следующий код, который описывает, как создать компонент, который это сделает, и как загрузить его в код-код для события загрузки страницы на странице aspx. Это здорово, я многому научился из статьи, но он по-прежнему не касается моей проблемы - нет веб-страницы, поэтому нет события загрузки страницы.
КАК: Доступ к внутренним объектам ASP.NET из компонентов .NET с помощью Visual С#.NET http://support.microsoft.com/kb/810928
Я использую С# и .NET 3.5, но я не использую расширенные функции кодирования С# (lambdas, методы расширения и т.д.). Я просто не поставил время, чтобы узнать, как их использовать...
Любые советы, указатели, примеры кода будут очень оценены. Благодаря, Dave
Если это веб-служба asmx (т.е. "страница" /точка входа - somefile.asmx, она должна быть такой же простой, как доступ к объекту запроса оттуда.
Пример: В Visual Studio создайте приложение веб-службы и вставьте следующий код в service1.asmx.cs: (приведенный ниже пример возвращает имена всех заголовков, которые были в веб-запросе)
(ниже приведено полное содержание service1.asmx.cs)
using System;
using System.Web;
using System.Web.Services;
namespace WebServiceIntrinsicObjects
{
///
/// Summary description for Service1
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
// HERE THE LINE: just get the request object from HTTPContext.Current (a static that returns the current HTTP context)
string test = string.Join(",", HttpContext.Current.Request.Headers.AllKeys);
return test;
}
}
}