| ايجاد Virtual Directory در يك وبسايت خاص از IIS 6.0 |
|
سايت ها و وبلاگ هاي زيادي در مورد نحوه ي سايت Virtual Directory در IIS صحبت كرده اند. اما هيچ كدام به طور دقيق روش اين كار را شرح نداده اند و يا تنها به وبسايت Default بسنده كرده اند. در اينجا روش ساخت Virtual Directory در يك وبسايت خاص از IIS 6.0 را بررسي مي كنيم. ابتدا بايستي از امكان ايجاد Virtual Directory اطمينان پيدا كنيم. از متغير bCanCreate براي اين كار استفاده مي كنيم.
System.DirectoryServices.DirectoryEntry iISSchema =
new System.DirectoryServices.DirectoryEntry
("IIS://" + sWebSite + "/Schema/AppIsolated");
bool bCanCreate =
(iISSchema.Properties["Syntax"].Value.ToString().ToUpper()
== "BOOLEAN");
iISSchema.Dispose();
در صورتي كه مقدار bCanCreate برابر با True بود، ID وبسايت مورد نظر را پيدا كرده و در SiteID نگهداري مي كنيم. فرض بر اين است كه اسم وبسايت در متغير sWebSite قرار داده شده است.
int SiteID = 1;
System.DirectoryServices.DirectoryEntry root =
new DirectoryEntry("IIS://LocalHost/W3SVC");
foreach (System.DirectoryServices.DirectoryEntry e
in root.Children)
{
if (e.SchemaClassName.ToUpper() == "IISWEBSERVER"
&& ((string)e.Invoke("Get", "ServerComment")).ToUpper()
== sWebSite.ToUpper())
{
SiteID = Convert.ToInt32(e.Name);
break;
}
}
در صورتي كه پوشه اي كه Virtual Directory به آن اشاره مي كند وجود نداشت، آن را مي سازيم. فرض بر اين است كه آدرس پوشه در متغير sPath قرار داده است.
if (!System.IO.Directory.Exists(sPath))
{
System.IO.Directory.CreateDirectory(sPath);
}
در صورتي كه وبسايت مورد نظر، Virtual Directory اي با همين نام داشته باشد، آن را حذف مي كنيم. فرض بر اين است كه اسم Virtual Directory در متغيري به نام sAppName قرار داده شده است.
System.DirectoryServices.DirectoryEntry iISAdmin =
new System.DirectoryServices.DirectoryEntry
("IIS://LocalHost/W3SVC/" + SiteID.ToString() + "/Root");
foreach (System.DirectoryServices.DirectoryEntry vd
in iISAdmin.Children)
{
NLog.File.Instance.Debug("DataProvider", "8");
if (vd.Name == sAppName)
{
iISAdmin.Invoke("Delete",
new string[] { vd.SchemaClassName, sAppName });
iISAdmin.CommitChanges();
break;
}
}
Virtual Directory مورد نظر را اضافه كرده و خصوصيات آن را تنظيم مي كنيم:
System.DirectoryServices.DirectoryEntry vdir =
iISAdmin.Children.Add(sAppName, "IIsWebVirtualDir");
vdir.Properties["Path"][0] = sPath;
vdir.Properties["AppFriendlyName"][0] = sAppName;
vdir.Properties["AppPackageName"][0] = sAppName;
vdir.Properties["EnableDirBrowsing"][0] = false;
vdir.Properties["AccessRead"][0] = true;
vdir.Properties["AccessExecute"][0] = true;
vdir.Properties["AccessWrite"][0] = true;
vdir.Properties["AccessScript"][0] = true;
vdir.Properties["AuthNTLM"][0] = true;
vdir.Properties["EnableDefaultDoc"][0] = true;
vdir.Properties["DefaultDoc"][0] =
"default.htm,default.aspx,default.asp";
vdir.Properties["AspEnableParentPaths"][0] = true;
vdir.CommitChanges();
vdir.Invoke("AppCreate", 1);
انجام اين اقدامات نيازمند Permission هاي خاصي است كه بايستي از طريق Impersonation در قبل شرح داده شده است فراهم شوند.
|