从Classic 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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

如何使用Cake在IIS中创建虚拟目录

来自分类Dev

IIS虚拟目录

来自分类Dev

指向IIS中的虚拟目录

来自分类Dev

如何通过Octopus部署在IIS中创建嵌套的虚拟目录?

来自分类Dev

在IIS上为Coldfusion Lucee创建虚拟目录

来自分类Dev

创建虚拟目录iis express aspnet core

来自分类Dev

使用虚拟目录/应用程序在IIS中托管ASP.NET 5 WebAPI

来自分类Dev

IIS拒绝访问虚拟目录中的简单HTML文件

来自分类Dev

IIS拒绝访问虚拟目录中的简单HTML文件

来自分类Dev

用ASP Classic编写JavaScript

来自分类Dev

Enable logging for a classic asp site

来自分类Dev

ASP Classic阅读XML提要

来自分类Dev

带有SQL的ASP Classic

来自分类Dev

ASP Classic中Request(“ *”)返回什么

来自分类Dev

ASP Classic中ADODB的XML输出参数

来自分类Dev

在ASP Classic中从Ajax检索POST数据

来自分类Dev

在ASP Classic页面中执行.Bat文件

来自分类Dev

如何在Classic Asp中复制字段

来自分类Dev

防止在ASP Classic中缓存PDF

来自分类Dev

确定 Asp Classic 中的多次登录?

来自分类Dev

将Uri创建到虚拟目录

来自分类Dev

在虚拟目录中部署ASP MVC

来自分类Dev

为什么在IIS管理器中看不到在Visual Studio 2013中为本地IIS创建的虚拟目录?

来自分类Dev

Crystal Reports 10,ASP Classic,IIS 7.5:HTTP错误401

来自分类Dev

如何更改IIS中虚拟目录的web.config生成位置?

来自分类Dev

web.config导致IIS中的虚拟目录出现HTTP 500问题

来自分类Dev

使用PowerShell在IIS 6中列出所有虚拟目录的问题

来自分类Dev

未在虚拟目录中获取AuthTicket