Получить веб-запрос и процесс - PullRequest
1 голос
/ 03 ноября 2011

Я новичок в области веб-приложений и хочу знать, как развернуть веб-страницу и показать ее для определенной стороны. У меня есть приложение, которое получает SMS от другого приложения. Мне нужно предоставить веб-страницу для другого приложения, чтобы отправлять сообщения в мое приложение.

Я хочу открыть страницу MessageReceive.aspx и получать запросы, как показано ниже. Я знаю, как обрабатывать строки запросов, но не уверен, что это лучший способ открыть страницу для стороннего приложения в Интернете?

http://www.Mysite.com.au/MessageReceive.aspx?ORIGINATOR=61412345678&RECIPIENT=1987654&MESSAGE_TEXT=Hello%20There!

Нужно ли развертывать страницу «MessageReceive.aspx» как веб-приложение на IIS? Если да, то не могли бы вы указать мне пример?

Как насчет использования HttpListener класса в службе Windows? Это способно сделать это?

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Класс HttpListener действительно способен размещать конечную точку, подобную той, в любом приложении (например, приложении Windows Desktop, Windows Service, Консольном приложении и т. Д.) Использование HttpListener в последовательном режиме, когда один запрос за раз может Быть обработанным довольно просто, однако использование его для обеспечения любого количества параллелизма может быстро стать довольно сложным.

Если вы хотите разместить последовательную конечную точку в службе Windows, HttpListener, безусловно, самый быстрый подход. Все, что действительно нужно, это что-то вроде этого

// To start:
var listener = new HttpListener("http://www.mysite.com.au/message/");
listener.Start();

// To stop:
listener.Stop();
listener.Close();

// In background thread:
while (listener.IsListening)
{
    var context = listener.GetContext(); // Will block until a request is received
    // TOD: Use the context variable (HttpListenerContext type) to get query string parameters and/or the request stream, process data, and configure a response
}

Простая подобная программа будет обрабатывать только один запрос за раз, однако HttpListener может ставить в очередь довольно много запросов одновременно. Если вы не намерены справляться с высокой нагрузкой в ​​вашем сервисе, этого должно быть достаточно. Если вам нужно справиться с высокой нагрузкой и одновременно обрабатывать запросы, вам нужно использовать методы BeginGetContext / EndGetContext и асинхронное программирование. Вы, разработчик, несете бремя, чтобы справиться со всеми сложностями параллельного программирования, регулирования, безопасного и безопасного отключения и т. Д. (Следует отметить, что вызовы EndGetContext имеют тенденцию генерировать вызовы при вызове во время закрытия HttpListener, что возможно, так как ThreadPool отвечает за выполнение обработчика обратного вызова асинхронных вызовов.)

0 голосов
/ 16 ноября 2018

HttpListener был обновлен и больше не будет принимать никаких аргументов в конструкторе. Чтобы установить свои префиксы, вам нужно использовать функцию .Add в свойстве Prefixes слушателя с массивом строк.

HttpListener listener = new HttpListener();
string[] prefixes = new string[] { "http://localhost:4201/" };
foreach (string s in prefixes)
{
    listener.Prefixes.Add(s);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...