我正在提供软件即服务的经典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] 删除。
我来说两句