Подобными сведениями нужно дорожить. ©
Показаны сообщения с ярлыком iis. Показать все сообщения
Показаны сообщения с ярлыком iis. Показать все сообщения
пятница, 20 апреля 2012 г.
Сокрытое в листве - 0x800700b7
Если после переноса web-сайта под IIS на новый комп он не открывается с ошибкой 0x800700b7 Ошибка конфигурации Определена копия раздела... с указанием куда-то внутрь файла web.config, не надо ничего выкашивать из web.config, нужно просто доустановить ASP.NET (из установщика компонентов windows), зарегистрировать его (aspnet_regiis.exe -i) и проверить, что указанный для сайта пул приложений использует нужную версию .NET Framework.
Подобными сведениями нужно дорожить. ©



Подобными сведениями нужно дорожить. ©
суббота, 9 июля 2011 г.
Создание сайта на IIS из инсталлятора
Смотрю кого-то занесло ко мне с поиском по фразе "как сделать инсталлятор сайта на iis". На самом деле их есть у меня. Вот выдержки из скрипта для Inno Setup, создающего сайт на основе каталога с файлами.
Несколько общих переменных и констант:
Несколько общих переменных и констант:
var
WebSiteNamePage: TInputQueryWizardPage;
DispatchWebSiteName: string;
const
IISServerName = 'localhost';
IISServerNumber = '1';
В самом начале убеждаемся, что все необходимое на месте:function InitializeSetup(): Boolean;
begin
// Проверка, что установлено все необходимое ПО
result := IsDotNet35Installed() and IsSQLServerInstalled() and IsIISInstalled();
end;
// Проверка, что установлен Microsoft IIS
function IsIISInstalled() : Boolean;
var
IIS: Variant;
begin
try
IIS := CreateOleObject('IISNamespace');
result:=true;
except
result:=false;
MsgBox( CustomMessage('InstallIIS'), mbError, MB_OK );
end;
end;
Собственно создание сайта у меня происходит в PostInstall(), когда уже скопированы все файлы сайта:// Действия после установки
procedure PostInstall();
begin
// Создать виртуальный каталог IIS для сайта
CreateDispatchVirtualDir();
end;
// Создание сайта на основе каталога со скопированными файлами
function CreateDispatchVirtualDir() : Boolean;
var
IIS, WebSite, WebServer, WebRoot, VDir: Variant;
ErrorCode: Integer;
begin
result:=true;
// подключение к IIS
try
IIS := CreateOleObject('IISNamespace');
except
result:=false;
MsgBox( CustomMessage('InstallIIS'), mbError, MB_OK );
end;
if result then
begin
try
// берем рычаги
DispatchWebSiteName := WebSiteNamePage.Values[0];
WebSite := IIS.GetObject('IIsWebService', IISServerName + '/w3svc');
WebServer := WebSite.GetObject('IIsWebServer', IISServerNumber);
WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');
// удаляем виртуальный каталог, который собираемся создавать
try
WebRoot.Delete('IIsWebVirtualDir', DispatchWebSiteName);
// сохранить изменения
WebRoot.SetInfo();
except
end;
// создаем виртуальный каталог
VDir := WebRoot.Create('IIsWebVirtualDir', DispatchWebSiteName);
VDir.AccessRead := True;
VDir.AccessScript:=true;
VDir.DefaultDoc:='default.aspx';
VDir.AppFriendlyName := DispatchWebSiteName;
VDir.Path := ExpandConstant('{app}');
VDir.AppCreate(True);
// сохранить изменения
VDir.SetInfo();
// открываем сайт в браузере
ShellExec( 'open', 'http://' + IISServerName + '/' + DispatchWebSiteName + '/', '', '', SW_SHOW, ewNoWait, ErrorCode );
result:=true;
except
MsgBox( CustomMessage('VirtualDirNotInstalled'), mbError, MB_OK );
result:=false;
end;
end;
end;
Ну и удаление при деинсталляции:// Действия после деинсталляции
procedure PostUninstall();
begin
DeleteDispatchVirtualDir();
end;
// Удаление виртуального каталога
function DeleteDispatchVirtualDir() : Boolean;
var
IIS, WebSite, WebServer, WebRoot: Variant;
begin
result:=true;
// подключение к IIS
try
IIS := CreateOleObject('IISNamespace');
except
result:=false;
end;
if result then
begin
try
// берем рычаги
WebSite := IIS.GetObject('IIsWebService', IISServerName + '/w3svc');
WebServer := WebSite.GetObject('IIsWebServer', IISServerNumber);
WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');
// удаляем виртуальный каталог
try
WebRoot.Delete('IIsWebVirtualDir', DispatchWebSiteName);
// сохранить изменения
WebRoot.SetInfo();
except
end;
result:=true;
except
result:=false;
end;
end;
end;
Скрипт проверен на windows 2003 и 2008. Надо только не забывать в 2008-й при настройке ролей сервера дополнительно инсталлировать компоненты, обеспечивающие совместимость со средствами управления IIS6:
суббота, 27 февраля 2010 г.
Переезд с Windows 2003/IIS6/MsSql2005 на Windows 2008/IIS7/MsSql2008
Намедне пришлось "переезжать" ASP.NET/MSSQL сайт, разработанный в расчете на Windows 2003/IIS6/MsSql2005 на Windows 2008/IIS7/MsSql2008 (просто потому что Windows 2003/MsSql2005 для новых заказчиков купить уже нельзя, только Windows 2008/MsSql2008). Непонятки пришлось собирать по кусочкам, поэтому решил заскладировать в одном месте.
- Законнектиться к локальному SQL server по имени .\MSSQLSERVER теперь нельзя, хотя установлен он таки с именем инстанции MSSQLSERVER, надо писать (local)
- Ok, запускаю инсталлятор сайта, вписываю (local), однако SQL Server все равно не виден. Оказывается упразднили SQLDMO :( Проблема решается установкой компонентов обратной совместимости с Microsoft SQL Server 2005 SQLServer2005_BC.msi из пакета дополнительных компонентов для Microsoft SQL Server 2008.
- Следующий шаг в инсталляторе, и - теперь он не видит IIS7, чтобы создать сайт. Причина аналогичная - компоненты IISNamespace отсутствуют как класс.
Решение даже попроще - при настройке ролей сервера надо дополнительно инсталлировать компоненты, обеспечивающие совместимость со средствами управления IIS6:

Уфф, инсталлятор отработал. - Запускаю сайт, первая же страничка, которая обращается к базе выдает:
"System.Data.SqlClient.SqlException: Ошибка входа пользователя "IIS APPPOOL\DefaultAppPool"".
Решение такое - открываем диспетчер служб IIS, заходим в настройки дополнительных параметров для DefaultAppPool:

В этих настройках находим параметр Удостоверение (Identity) и изменяем учетную запись с ApplicationPoolIdentity на LocalSystem:

Чудо - данные из базы появились на страничках. - Радоваться однако рано - на сайте нет ни одной картинки, которые генерируются при помощи HttpHandlers. Оказывается IIS7 не видит обработчиков, зарегистрированных в Web.config в секции <system.web><httpHandlers> и их нужно перетащить в <system.webserver><handlers>, добавив для правильности формата атрибуты name и preCondition.
- Остался не работающий модуль (IHttpModule), определяющий разрешение экрана клиента. Решение аналогичное - запись для него, которая была в <system.web><httpModules> надо вставить в <system.webServer><modules>.
- И последняя мелочь - нормально отображавшаяся картинка, заданная как background-image: url(/images/plan.gif) показываться не хочет. Так - background-image: url(~/images/plan.gif) - тоже. Отображается только так - background-image: url(images/plan.gif).
Подписаться на:
Сообщения (Atom)