Как получить доступ к внутренним объектам ASP.NET из кода веб-службы (C #)? - PullRequest
2 голосов
/ 21 мая 2009

В частности, мне нужно проверить входящий сертификат безопасности X.509 по базе данных, чтобы разрешить доступ к моей веб-службе. Для этого мне нужно получить копию сертификата, отправленного клиентом. Я думаю, что знаю, как это сделать, если смогу выяснить, как получить доступ к объекту http Request - встроенному объекту ASP.NET.

Я нашел следующий код, который описывает, как создать компонент, который будет это делать, и как загрузить его в коде для события Page Load на странице aspx. Это здорово, я многому научился из этой статьи, но она все еще не решает мою проблему - нет веб-страницы, поэтому нет события загрузки страницы.

КАК: Доступ к внутренним объектам ASP.NET из компонентов .NET с помощью Visual C # .NET http://support.microsoft.com/kb/810928

Я использую C # и .NET 3.5, но я не использую расширенные возможности кодирования C # (лямбда-выражения, методы расширения и т. Д.). Я просто еще не удосужился научиться ими пользоваться ...

Любые советы, указатели, примеры кода будут высоко оценены. Спасибо, Dave

1 Ответ

4 голосов
/ 21 мая 2009

Если это веб-служба 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'S 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;
        }
    }
}

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