通过经典ASP在IIS中创建虚拟目录

菲兹

我正在提供软件即服务的经典ASP网站上工作。该网站的潜在客户与我们联系,我们将手动设置该网站。我们希望使该过程尽可能自动化。当前,我有一个表格,老板可以填写以存根数据库中的数据。该过程向我发送了一封电子邮件,我必须手动为该站点创建虚拟目录。

我想使用Classic ASP进行设置。我从GIS中找不到很好的结果。我发现了有关创建批处理文件或执行appcmd的东西。有人成功吗?

现在,我们的URL看起来像“ https://www.somesite.com/CustomerName ”。稍后,我想将其更改为“ https://CustomerName.somesite.com ”。在这方面的任何帮助也将不胜感激。

琳恩粉碎

概述

我只能想到两种从经典ASP中以编程方式修改IIS配置的方法。第一种是使用ADSI或WMI之类的COM类来操纵配置。第二个将利用Microsoft引入的新ASP.Net类Microsoft.Web.Administration(为完整起见,您也可以使用System.DirectoryServices,但是这些类只是ADSI的托管包装。)


方法1-通过ADSI进行COM

我将首先讨论基于COM的解决方案,因为这种方法将涉及最少的开销。我将专注于ADSI,而不是WMI,因为这是我过去使用的方法。可以使用ADSI添加网站,vdir,应用程序等

例如,要创建一个新站点,可以使用CreateNewSite()

Dim myNewSiteID, oIIsWebServiceObj, oBindings 

oBindings = Array(0) 
Set oBindings(0) = providerObj.get("ServerBinding").SpawnInstance_() 
oBindings(0).IP = "192.168.1.1" 
oBindings(0).Port = "80" 
oBindings(0).Hostname = "yournewsite.example.com"

Set oIIsWebServiceObj = GetObject("IIS://MachineName/W3SVC")
myNewSiteID = oIIsWebServiceObj.CreateNewSite("NewSite", oBindings, _
       "C:\Sites\yournewsite")

要创建一个新的虚拟目录,可以使用:

Dim IIsWebVDirRootObj, IIsWebVDirObj
Set IIsWebVDirRootObj = GetObject("IIS://localhost/W3SVC/1/Root") 
Set IIsWebVDirObj = IIsWebVDirRootObj.Create("IIsWebVirtualDir", "NewVDir") 
IIsWebVDirObj.Put "Path", "C:\NewContent"  
IIsWebVDirObj.Put "AccessRead", True 
IIsWebVDirObj.Put "AccessScript", True 
IIsWebVDirObj.SetInfo

我有95%的肯定是要使用ADSI或WMI,您将需要启用IIS6兼容性,因为这些COM对象试图操纵元数据库,而新版本的IIS不再使用。要启用IIS6兼容性,请参见IIS 7.5的MSDN页面IIS8的MSDN页面


方法2-通过Microsoft.Web.Administration的.Net

如果我不知道如何使用.Net,我会选择Microsoft.Web.Administration而不是System.DirectoryServices。不管使用哪个.Net类,都必须将其包装以能够从经典的ASP中使用它,因为没有原生方法可以调用.Net。为此,您需要包装在CCW中编写的所有代码-COM -Callable Wrapper完全有可能这样做,您可以在.Net中编写所有代码,并实例化一个COM组件,该组件只是所有.Net代码的容器。我不会详细介绍如何在CCW中包装.net代码,但是您的CCW的.Net代码将非常简单:

ServerManager serverManager = new ServerManager();
Site mySite = serverManager.Sites.Add("NewSite", "C:\\Sites\\yournewsite", 80);
mySite.ServerAutoStart = true;
serverManager.CommitChanges();

有关如何使用CCW的更多信息,请参见此MSDN文章


最后...权限。

现在,更大的问题是:您正在以IUSR或IUSR_ MachineName的身份运行,或者以某些绝对没有权限使用IIS配置进行配置的受限帐户运行。一种或另一种方式,您将必须获得更多的许可。您也许可以在经典的asp中使用模拟功能,但另一种方法是更改应用程序以其身份运行的身份就您而言,这绝对是令人恐惧的,您需要以比IUSR更特权的方式运行。

或者,只需关闭匿名身份验证,然后启用基本身份验证。然后,向要向服务器进行身份验证的用户授予足够的特权,并且代码应该可以正常运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章