IIS 6.0 программно - проблема с созданием виртуальных каталогов, а не настройкой его в качестве приложения - PullRequest
5 голосов
/ 06 февраля 2011

Итак, я создаю виртуальный каталог в IIS 6.0 программно, но я следую единственной документации MSDN (или другой) по созданию виртуального каталога, но документация у меня есть на

http://msdn.microsoft.com/en-us/library/ms525598(VS.90).aspx

Заставляет мой виртуальный каталог быть приложением в IIS. Я пытался использовать страницу свойств метабазы:

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/cde669f1-5714-4159-af95-f334251c8cbd.mspx?mfr=true

Но в море вариантов я не уверен, какие свойства мне нужно установить, чтобы оговорить его строго как виртуальный каталог:

DirectoryEntries vdirs = site.Children;
DirectoryEntry newVDir = vdirs.Add(vDirName, (className.Replace("Service", "VirtualDir")));

newVDir.Properties["Path"][0] = phyPath;
newVDir.Properties["AccessScript"][0] = true;
newVDir.Properties["AppFriendlyName"][0] = vDirName;
newVDir.Properties["AppIsolated"][0] = "0";
newVDir.Properties["AppRoot"][0] = "/LM" + metaBaseFullPath.Substring(metaBaseFullPath.IndexOf("/", ("IIS://".Length)));

newVDir.CommitChanges();

Ответы [ 3 ]

1 голос
/ 07 февраля 2011

Файл metabase.xml в %systemroot%\windows\system32\inetsrv - ваш лучший друг. Если вы создадите виртуальный каталог в IIS MMC, вы увидите требуемые атрибуты атрибутов, которые необходимо установить:

Здесь я создал виртуальный каталог с именем myvdir на сайте, эта конфигурация метабазы ​​сохранилась до metabase.xml:

<IIsWebVirtualDir   
    Location ="/LM/W3SVC/1/root/myvdir"
    AccessFlags="AccessRead | AccessScript"
    DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | 
                    DirBrowseShowSize | DirBrowseShowExtension | 
                    DirBrowseShowLongDate | EnableDefaultDoc"
    Path="D:\websites\myapp\www\myvdir" >
1 голос
/ 11 февраля 2011

Насколько я помню, вы не можете установить IIsWebVirtualDir как приложение (или нет) по свойствам, но вызывая методы для него. В вашем случае вам придется вызвать «AppDelete».

Создайте IIsWebVirtualDir приложение ...

newVDir.Invoke("AppCreate", 1);

или

newVDir.Invoke("AppCreate2", new object[] { 0 });

Завершить IIsWebVirtualDir как приложение ...

newVDir.Invoke("AppDelete");

Подробную информацию об этих методах и их параметрах можно найти в документации ADSI, но вам необходимо преобразовать там примеры кода в синтаксис C #.

1 голос
/ 06 февраля 2011

Попробуйте , а не при настройке определенных пулов приложений.просто:

newVDir.Properties["Path"][0] = phyPath;
newVDir.Properties["AccessScript"][0] = true;

newVDir.CommitChanges();

Давненько этого не делал, но я думаю, вот и все

...