Сбой веб-сайта Delphi Intraweb на IIS - PullRequest
0 голосов
/ 20 апреля 2011

Я сделал приложение Intraweb ISAPI. После создания dll я создал веб-сайт на IIS и пул для приложения. В каталоге Inetpub установлены разрешения для гостевой учетной записи Интернета и для учетных записей IIS_WPG.

Когда я пытаюсь получить доступ к веб-странице из IE (http://ip.0.0.1/website/application.dll), мне возвращается HTTP 500 или

enter image description here

ошибки. После поиска в интернете пишет, что это проблема инициализации COM. Но в модуле данных приложения есть этот код:

initialization
  CoInitialize(nil);

finalization
  CoUninitialize;

Кто-нибудь может дать какой-нибудь совет?

1 Ответ

3 голосов
/ 20 апреля 2011

Не используйте ваши собственные вызовы CoInitliaze, но instread использует ServerController и установите для свойства ComInitialization значение, например, ciMultiThread.

Из моего руководства по программному обеспечению IntraWeb: «Свойство ComInitialization типа TComInitialization (ciNone, ciNormal,ciMultiThread) необходим, когда приложение требует использования (D) COM. Поскольку IntraWeb выполняет запросы в разных потоках, каждый поток должен сделать свой собственный вызов CoInitialize. По умолчанию это свойство установлено в ciNone, чтобы указать, что поддержка COM не поддерживается.Если вам нужна поддержка COM - например, если вы хотите подключиться к серверу DataSnap - тогда вам нужно установить ComInitialization в ciNormal или ciMultiThreaded. Лично я не нашел причин не устанавливать его в ciMultiThreaded при работе с COM втак или иначе в ISAPI DLL, хотя IIS 6 и выше может обрабатывать требуемую ComInitialization уже для вас, и вы должны установить его в ciNone (но похоже, что он игнорируется, когда установлен в какой-то oЭто значение, поэтому ciMultiThread тоже не повредит). "

...