虚拟目录和应用程序是两个非常容易混淆的概念。但是在IIS 7.0中,虚拟目录和应用程序是截然不同的两个概念。本章主要介绍应用程序和应用程序池,而没有介绍虚拟目录,但是在继续讨论之前,我们必须明辨虚拟目录和应用程序之间的区别。
应用程序是一个逻辑边界,这个逻辑边界可以分隔网站及其组成部分。虚拟目录则是一个真实的指针,这个指针指向了一个本地或远程物理路径。虚拟目录总是存在于应用程序之中,一个应用程序可包括多个虚拟目录。
很多系统能运行在32位及64位的IIS下,但是,一般情况下,我们建议将win2008的IIS运行在32状态下,原因是ASP程序必须在32位下才能使用ACCESS。设置办法:
1、打开IIS管理器,点应用程序池。
2、再点右边的"设置应用程序池默认设置"。
3、再点启用32位应用程序,将false改成true。
4、确定后就生效了。
using Systemusing System.Collections.Generic
using System.Text
using System.DirectoryServices
using System.IO
using System.Security.AccessControl
using System.Data
using System.Data.SqlClient
using Microsoft.Web.Administration
namespace Setup
{
public class Win2008
{
//设置应用程序使用.NET4.0
public static void EnableNet4()
{
try
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration()
ConfigurationSection isapiCgiRestrictionSection = config.GetSection("system.webServer/security/isapiCgiRestriction")
ConfigurationElementCollection isapiCgiRestrictionCollection = isapiCgiRestrictionSection.GetCollection()
foreach (ConfigurationElement element in isapiCgiRestrictionCollection)
{
string path = element["path"].ToString()
string allowed = element["allowed"].ToString()
string description = element["description"].ToString()
string groupId = element["groupId"].ToString()
if (description == "ASP.NET v4.0.30319")
{
element["allowed"] = true
}
}
serverManager.CommitChanges()
}
}
catch
{
}
}
//删除应用程序
public static bool DeleteVdir(string vDirName)
{
try
{
ServerManager serverManager = new ServerManager()
Site mySite = serverManager.Sites["Default Web Site"]
Microsoft.Web.Administration.Application application = mySite.Applications["/" + vDirName]
mySite.Applications.Remove(application)
serverManager.CommitChanges()
return true
}
catch(Exception ex)
{
Common.WriteLog(ex.Message)
return false
}
}
//添加应用程序,参数:vdir:应用程序名如 abc, phydir:物理路径 如 d:\xxx\www
public static bool CreateVdir(string vdir, string phydir)
{
try
{
ServerManager serverManager = new ServerManager()
Site mySite = serverManager.Sites["Default Web Site"]
mySite.Applications.Add("/" + vdir, phydir)
serverManager.CommitChanges()
return true
}
catch (Exception ex)
{
Common.WriteLog(ex.Message)
}
return false
}
//删除应用程序池
public static void DeleteAppPool(string appPoolName)
{
try
{
ServerManager serverManager = new ServerManager()
ApplicationPool apppool = serverManager.ApplicationPools[appPoolName]
serverManager.ApplicationPools.Remove(apppool)
serverManager.CommitChanges()
}
catch(Exception ex)
{
Common.WriteLog(ex.Message)
}
}
//添加应用程序池,添加之前先删除
public static void CreateAppPool( string appPoolName)
{
DeleteAppPool(appPoolName)
try
{
ServerManager serverManager = new ServerManager()
serverManager.ApplicationPools.Add(appPoolName)
ApplicationPool apppool = serverManager.ApplicationPools[appPoolName]
apppool.ManagedPipelineMode = ManagedPipelineMode.Integrated
apppool.Enable32BitAppOnWin64 = true
apppool.ManagedRuntimeVersion = "v4.0"
serverManager.CommitChanges()
apppool.Recycle()
}
catch(Exception ex)
{
Common.WriteLog(ex.Message)
}
}
//将站点分配到应用程序池
public static void AssignVDirToAppPool(string vdir, string appPoolName)
{
try
{
ServerManager serverManager = new ServerManager()
Site site = serverManager.Sites["Default Web Site"]
site.Applications["/" + vdir].ApplicationPoolName = appPoolName
serverManager.CommitChanges()
}
catch(Exception ex)
{
Common.WriteLog(ex.Message)
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)