主题:  大家帮看看,哪错了!谢谢~~~~~运行时错误

嘎嘎

职务:普通成员
等级:1
金币:1.0
发贴:287
#12003/11/14 19:16:15
配置IIS的虚拟目录的vbscript代码,可是运行时错误。

HTTP 500.100 - 内部服务器错误 - ASP 错误

错误类型:
Microsoft VBScript 运行时错误 (0x800A01A8)
/www/msdn1.asp, 第 31 行
也就是红色的那一行,麻烦大家帮看看,错在哪。帮我调试修改一下好么?感激!


<%
strServerName ="localhost"
strRootPath="d:\mns" ''虚拟目录路径
strVRName="Test" ''虚拟目录名称
strDefaultDoc="index.asp" ''起始文档

Dim objIIS


On Error Resume Next
Set objIIS=GetObject("IIS://" & strServerName & "/W3SVC/1" )

If err=-2147024893 Then
MsgBox "IIS不存在!" & vbcrlf & "请验证IIS是否已正确安装!",vbcritical
Wscript.Quit
ElseIf err<>0 Then
MsgBox "未知错误!",vbcritical
Wscript.Quit
End If

On Error GoTo 0

Set objVirtualDir=objIIS.GetObject("IISWebVirtualDir","Root" )
For each VR in objVirtualDir
If VR.Name=strVRName Then
MsgBox "虚拟目录" & strVRName & "已存在!",vbinformation
Wscript.Quit
End If
Next

On Error Resume Next
Set fs=Wscript.CreateObject("Scripting.FileSystemObject" )
Set objFolder=fs.GetFolder(strRootPath)

If err=76 Then
MsgBox "路径" & strRootPath & "不存在!",vbcritical
Wscript.Quit
End If

Set objFolder=nothing
Set fs=nothing
On Error GoTo 0

On Error Resume Next
Set VirDir=objVirtualDir.Create("IISWebVirtualDir",strVRName)
VirDir.AccessRead=true
VirDir.Path=strRootPath
VirDir.DefaultDoc=VirDir.DefaultDoc & "," & strDefaultDoc

VirDir.setInfo

If err<>0 Then
MsgBox "创建虚拟目录失败!",vbcritical
Else
MsgBox "虚拟目录" & strVRName & "成功创建在服务器" & strServerName & "上!",vbinformation
End If
%>



{ 在指尖上绽放的花朵 }

职务:普通成员
等级:5
金币:14.0
发贴:3209
#22003/11/14 23:38:25
这个是vbscript代码吧……

可以在ASP里面运行吗?



{ 在指尖上绽放的花朵 }

职务:普通成员
等级:5
金币:14.0
发贴:3209

janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#42003/11/15 0:29:56
从 Wscript.Quit 可以看出这段代码要通过wscript.exe 来解释运行,所以不能放在ASP

通常我们使用 Administrators 组成员登录本地计算机,这时运行 IIS ADSI 应用程序不存在权限问题。但是如果放在 ASP 页面中,权限问题就暴露出来了,因为系统是以当前站点匿名用户(IUSER_computername)的身份来运行这段程序的,而通常站点的匿名用户权限很低,不能用来配置 IIS.



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#52003/11/15 0:33:08
调试这种程序时,可以在前面加上 response.status="401 not Authorized" 或者取消匿名访问来强制浏览者登录。



{ 在指尖上绽放的花朵 }

职务:普通成员
等级:5
金币:14.0
发贴:3209
#62003/11/15 0:53:12
response.status的格式我记得好像是~

response.status=401


这样吧?

汗…… 也许不对……



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#72003/11/15 20:22:39
经查MSDN,exchange server 里面是这样用的:
RFC 2068 defines the following five classes of response codes: 
1xx: Informational - Request received, continuing process.
2xx: Success - The action was successfully received, understood, and accepted.
3xx: Redirection - Further action must be taken in order to complete the request.
4xx: Client Error - The request contains bad syntax or cannot be fulfilled.
5xx: Server Error - The server failed to fulfill an apparently valid request.


但IIS里面不一样。相关IIS文档看这里:
MSDN: ASP 内建对象参考
并做了实际测试