Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Запуск программы


Автор: NetSharp 4.5.2004, 03:09
Здравствуйте.

Мне необходимо запускать программу из строки адреса браузера (конечно, на моей машине). Делаю так:
http://localhost/myapp.exe
Программа удачно запускается и работает, но при завершении в браузере грузится страница с надписью:
CGI Error
The specified CGI application misbehaved by not returning a complete
set of HTTP headers. The headers it did return are:


Подскажите, пожалуйста, где ошибка?

В продолжение, еще хотелось бы обрабатывать параметры, переданные программе в адресе, например:
http://localhost/myapp.exe?id=2
Нужно узнать значение параметра ID.

Автор: stab 4.5.2004, 14:18
Лучше оформи все это дело, как класс и используй из ASP.

Автор: AntonSaburov 5.5.2004, 12:34
Почитай описание HTTP - тебе же говорят, что програама не возвращает необходимые HTTP заголовки. Посмотри, что там у тебя программа отдает.

Автор: NetSharp 8.5.2004, 07:13
Сообщение я понял. Но в том-то и дело, я понятия не имею, какие заголовки нужно вернуть и как...

Автор: stab 11.5.2004, 10:00
спецификация HTTP 1.1:
ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt

а вот что возвращает www.com при GET / HTTP/1.0 :
Код

HTTP/1.0 200 OK
Server: Resin/2.1.11
ETag: "AAAAPxxGLgG"
Last-Modified: Mon, 10 May 2004 22:46:43 GMT
Expires: Tue, 11 May 2004 06:58:14 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 7731
Date: Tue, 11 May 2004 06:58:19 GMT

<html>
     <head>
             <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <link type="text/css" rel="STYLESHEET" href="/css/default.css">
                                                                   <title>Resin Default Home Page</title>
                           <meta name="description" content="Resin┬о Default Home Page

............................. т.д.


Точно ли задача требует ручной реализации HTTP? Лучше не запариваться и использовать ASP, ИМХО

Автор: NetSharp 11.5.2004, 15:11
Спасибо.. Но как это реализовать программно?

В принципе, ASP .NET тоже подойдет, но только и только в том случае, если из него можно запускать приложение под текущей учетной записью (по умолчанию он запускает приложение под ASPNET).

Автор: stab 12.5.2004, 09:02
Я бы посоветовал оформить это приложение как Class Library (dll) и использовать прямо из ASP, т.е. без запуска отдельного приложения, если, конечно, специфика задачи это позволяет. К сожелению расказать по шагам не могу, т.к. по не объяснимым причинам мой локальный сервак сдулся и реанимации не поддается.

Автор: NetSharp 12.5.2004, 22:24
Немного проясню ситуацию: само Web-приложение (будь то исполняемый файл или веб-страница), обработав переданные аргументы, должно в свою очередь запускать другое приложение. Если, например, я сделаю ASP.NET страницу, которая будет запускать нужное приложение, то оно по умолчанию запускается под учетной записью ASPNET, что в моем случае неприемлемо. Если же я сделаю самостоятельное приложение, то такой проблемы не возникает, однако появляется другая проблема, описанная выше...
Может есть варианты запустить программу под текущей учетной записью?

Автор: Kurt 14.5.2004, 01:08
Можно попробовать через WinAPI-функции, но я сейчас не готов ответить как.. smile.gif
А что если ASP.NET-приложение запустить под другим пользователем? Тогда и запускаемое из ASP.NET приложение, вроде, тоже будет под этим пользователем.
Сам я с таким не работал, но слышал, там в web.config надо вставить строчки:
Код
<system.web>
..
   <processModel enable="true"
                 userName="SOMEMACHINE/SOMEUSER"
                 password="password"/>
..
</system.web>

Однако, там надо еще какие-то изменения в machine.config сделать..
Погляди в этом направлении - можь, это то, что тебе надо..
Удачи!

З.Ы. А в самом ASP.NET-приложении нельзя все выполнить? (как советовал cully..) Чтоб не исполнять внешнюю программу?

Автор: NetSharp 14.5.2004, 16:12
Kurt, большое спасибо за совет!

Цитата
З.Ы. А в самом ASP.NET-приложении нельзя все выполнить? (как советовал cully..) Чтоб не исполнять внешнюю программу?

нет...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)