使用ServerManager在应用程序中创建应用程序
我正在使用 ServerManager (Microsoft.Web.Administration.dll) 在 IIS 7 上的网站内创建应用程序。 我需要在此应用程序中创建一个应用程序或将虚拟目录转换为应用程序(如iis管理器功能右键单击->转换为应用程序) 这如何可行?我发现关于这个库的文档很少,并且没有一个文档提到这个特定的功能。 谢谢。
I'm using ServerManager (Microsoft.Web.Administration.dll) to create an Application within a website on IIS 7.
I need to create an application within this application or convert a virtual directory to an application (like the iis manager feature right-click -> convert to application)
How is this doable? I found very little documentation regarding this lib, and none of it referred to this particular functionality.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
执行此操作的方法是操作
Site.Applications
集合,该集合是站点中所有应用程序的扁平树。为了这些示例,我们假设一个名为“MySite”的站点,其内容位于本地硬盘上:
d:\mysite\www
。该站点的 IIS 编号为3
,并且该站点驻留在其自己的应用程序池(也称为“MySite”)中。我们还将假设站点具有以下文件夹结构
首先,我们获取要添加的站点应用程序,我们将在整个过程中使用变量
site
:根“/”应用程序:
每个站点都有一个“根”应用程序。如果我们打开位于
%systemroot%\windows\system32\inetsrv\config
中的applicationHost.config
并找到我们的
节点在 site 中,我们看到以下内容:每个
都包含
的集合。始终至少有一个应用程序定义根应用程序/
。applicationPool
属性指定要使用的应用程序池。请注意,有一个子元素:
virtualDirectory
。每个
application
都有一个virtualDirectory
元素的子集合,并且该集合中通常至少有一个元素。根应用程序中的默认
告诉我们:path="/"
),并且physicalPath="d:\MySite\www"
)。每个
virtualDirectory
的path
都相对于父application
路径中指定的path
。添加虚拟目录:
如果我们想将虚拟目录添加到映射到文件系统上其他位置的“站点根目录”,我们会这样做:
最终的配置如下所示:
我们在 IIS 中看到了这一点Manager:
将虚拟目录添加到现有虚拟目录:
如果我们想添加我们要做的
vdir1
子虚拟目录:这会导致:
IIS Manager:
添加虚拟目录时需要记住以下几点:
path
始终相对于父应用程序path
的最后一部分>path
例如/vdir_1
和.../sub_dir1
成为虚拟目录的名称d:\MySite\ www
)。即path
应该能够覆盖已经存在的内容,否则虚拟目录在 IIS 管理器中将不可见。关于最后一点,例如,我们没有名为
/vdir_2
的物理文件夹或虚拟目录,但以下代码完全合法:您不会看到
/vdir_2/sub_dir1< /code> 显示在 IIS 管理器中,但它是合法的,您实际上可以浏览到它。我们还可以在
applicationHost.config
中看到它:将文件夹转换为应用程序:
如果您刚刚将 ASP.NET 应用程序上传到
/app_1
文件夹在您的网站中,如果您想将其转换为自己的应用程序,我们会这样做:中,我们可以看到添加了一个新的
元素:在
applicationHost.config
IIS 我们看到:这相当于右键单击“转换为应用程序”。
将应用程序添加到现有应用程序:
将应用程序添加为现有应用程序的子应用程序非常简单。假设我们想让
/app_1/sub_app_1
成为/app_1
的子应用程序:我们只需这样做:
最终的配置将如下所示:
在 IIS 中:
将虚拟目录添加到应用程序:
现在,如果我们想向该应用程序添加虚拟目录,我们可以这样做:
在< /code> 元素已添加:
applicationHost.config
中,我们可以看到一个新的在 IIS 中,我们看到:
再次重要的是要注意虚拟路径 < code>/vdir1 始终相对于包含应用程序的路径。
将现有虚拟目录转换为应用程序:
如果我们想要将刚刚创建的虚拟目录 (
/app_1/vdir1
) 转换为应用程序该怎么办?我们需要分两步完成此操作:生成的
applicationHost.config
如下所示:在 IIS 管理器中,我们看到:
将应用程序添加到现有虚拟目录:
如果我们想要将应用程序添加到虚拟目录,会发生什么情况,它是如何工作的?在此示例中,我们将向我们之前创建的虚拟目录
/vdir_1/sub_dir1
添加一个应用程序。结果配置如下所示:
在 IIS 管理器中,我们看到:
将现有子文件夹转换为应用程序:
作为最后一个示例,我们希望将
/other_apps/sub_app_1
转换为应用程序:我们的代码如下所示:
结果配置:
在 IIS 管理器中:
希望这有助于解释之间的关系站点、应用程序和虚拟目录。
The way to do this is to manipulate the
Site.Applications
collection which is a flattened tree of all the applications in your site.For the sake of these examples we'll assume a site called "MySite" where the content is located on the local hard disk at:
d:\mysite\www
. The site's IIS number is3
and the site resides in its own application pool also called "MySite".We'll also assume the following folder structure for the site
To start with we get the site we want to add an application to, we'll use the variable
site
throughout:The root "/" application:
Every site has a "root" application. If we open
applicationHost.config
located in%systemroot%\windows\system32\inetsrv\config
and locate the<site>
node for our site we see the following:Each
<site>
contains a collection of<application>
's. There will always be at least one application which defines the root application,/
.The
applicationPool
attribute specifies which application pool to use.Note that that there is a single child element:
virtualDirectory
.Every
application
has a child collection ofvirtualDirectory
elements and there will usually be at least one element in this collection.The default
<virtualDirectory>
within the root application tells us:path="/"
) andd:\MySite\www
(physicalPath="d:\MySite\www"
).The
path
of eachvirtualDirectory
is relative to thepath
specified in the parentapplication
path.Adding a Virtual Directory:
If we wanted to add a virtual directory to the "site root" mapped to somewhere else on the filesystem we'd do:
The resultant configuration looks like:
And we see this in IIS Manager:
Adding a Virtual Directory to an existing Virtual Directory:
If we wanted to add a child virtual directory to
vdir1
we'd do:this results in:
IIS Manager:
There's a couple things to keep in mind when adding virtual directories:
path
is always relative to the parent applicationpath
path
e.g./vdir_1
and.../sub_dir1
becomes the name of the virtual directoryd:\MySite\www
). i.e. thepath
should be able to overlay something that is already there otherwise a virtual directory won't be visible in IIS manager.Regarding that last point, for example, we don't have a physical folder or virtual directory called
/vdir_2
but the following code is perfectly legal:You won't see
/vdir_2/sub_dir1
show up in IIS manager but it is legal and you can actually browse to it. We can also see it inapplicationHost.config
:Convert Folder to Application:
If you just uploaded an ASP.NET application to the
/app_1
folder in your site and you want to turn this into its own Application we do this:In
applicationHost.config
we can see a new<application>
element has been added:In IIS we see:
This is the equivalent of doing right-click "Convert to Application".
Add Application to Existing Application:
Adding an application as a child of an existing application is very simple. Say we want to make
/app_1/sub_app_1
a sub application of/app_1
:We would simply do:
The resultant configuration would look like:
In IIS:
Add Virtual Directory to Application:
Now if we wanted to add a virtual directory to this application we would do:
In
applicationHost.config
we can see a new<virtualDirectory>
element has been added:In IIS we see:
Again it is important to note that the virtual path
/vdir1
is always relative to the path of the containing application.Convert Existing Virtual Directory to Application:
What if we wanted to convert the virtual directory we just created (
/app_1/vdir1
) to an application? We'd need to do this in two steps:The resultant
applicationHost.config
looks like:In IIS Manager we see:
Add Application to Existing Virtual Directory:
What happens if we want to add an application to a virtual directory, how does that work? In this example we'll add an application to the virtual directory
/vdir_1/sub_dir1
which we created earlier.The resultant config looks like:
And in IIS manager we see:
Convert Existing Child Folder into an Application:
As a final example, we want to turn
/other_apps/sub_app_1
into an application:Our code looks like:
The resultant config:
In IIS manager:
Hope this helps explain the relationship between sites, applications and virtual directories.