Я пишу сервер Windows на базе Delphi для HTML-клиента на основе планшета.
Большинство файлов обрабатываются необработанными, как и следовало ожидать от веб-сервера, но несколько специальных ключевых слов:интерпретируется как специальные команды, которые взаимодействуют с другим программным обеспечением на сервере.
В большинстве случаев все в порядке.Но потом, казалось бы, наугад, я получил бы нарушение доступа, и это было бы при попытке получить один из параметров GET.
Это сводило меня с ума, поэтому я заключил все это ви только что начал тестирование на наличие данных TIdHTTPRequestInfo (показанных здесь как общедоступное свойство Запрос внутри класса):
function TELSCommand.GETValue(key:AnsiString):AnsiString;
begin
if not Assigned(Request) then begin
Log.e('WHERE IS REQUEST?');
Result := '';
Exit;
end;
if not Assigned(Request.Params) then begin
Log.e('WHERE IS REQUEST PARAMS?');
Result := '';
Exit;
end;
if (Request.Params.IndexOfName(key) >= 0) then
Result := Request.Params.Values[key]
else
Result := '';
end;
Я не сделална самом деле ожидаем, что сработает любая из двух проверок Assigned (), но, случайно, вторая сработает, и я увижу "ГДЕ ПАРАМЫ ЗАПРОСА?"в моем файле журнала после нажатия F5 (медленно, я не бью сервер).
Когда я сбрасываю точку останова внутри блока и проверяю значение Request, когда оно достигает этой точки, весь * 1016Структура * TIdHTTPRequestInfo заполнена пустыми данными по умолчанию.Если я проверю браузер, чтобы увидеть, какой запрос он отправил, это то, что я ожидал ... (как правило, просто запрос для " / details? Id = 222 ", например).
Должен заметить, что я работаю на 64-битной Windows 7, так что я постоянно параноидален из-за таких вещей, как это.Я не раз сталкивался с трудностями из-за 64-битного дурачества.
Дополнительная информация: Indy 9, Delphi 2007.
Надеюсь, это было достаточно ясно, чтобы понять.Я не ищу конкретные ответы, так как я не предоставил достаточно;Я просто ищу предложения о том, куда идти отсюда.Очень признателен!:)