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

2

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

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

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

Я использую С# и .NET 3.5, но я не использую расширенные функции кодирования С# (lambdas, методы расширения и т.д.). Я просто не поставил время, чтобы узнать, как их использовать...

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

  • 0
    В качестве отступления - вам может быть намного проще с WCF
  • 0
    Конечно, но - это еще одна технология, которую я не успел изучить. У меня есть работающий веб-сервис, который теперь требует двухэтапной аутентификации.
Теги:
web-services

1 ответ

4
Лучший ответ

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

  • 0
    Это делает это! Я знал, что это было просто, но час или два поиска в сети приносили больше путаницы, чем ясности. Спасибо!
  • 0
    Рад, что смог помочь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню