Shroder
asked on
Need to set custom error pages on automated site creation
I've attached a snippet of the code I'm using to create the site in IIS. The full script currently creates a site successfully. However, I wanted to modify it so that it set custom error pages.
From googling and reading the Microsoft Knowledge Base I found that the IIsWebVirtualdirSettings object allows HTTPErrors to be set. When I try assign a string to oVirtualDir.HTTPErrors it gives me a type mismatch error.
From further reading it sounds like I'm suppose to assign an array to HTTPErrors, but that didn't seem to work either.
If someone could show me how to properly assign the error page settings to oVirtualdir.HTTPErrors I would appreciate it.
From googling and reading the Microsoft Knowledge Base I found that the IIsWebVirtualdirSettings object allows HTTPErrors to be set. When I try assign a string to oVirtualDir.HTTPErrors it gives me a type mismatch error.
From further reading it sounds like I'm suppose to assign an array to HTTPErrors, but that didn't seem to work either.
If someone could show me how to properly assign the error page settings to oVirtualdir.HTTPErrors I would appreciate it.
set oLocator = CreateObject("WbemScripting.SWbemLocator")
set oProvider = oLocator.ConnectServer("localhost", "root/MicrosoftIISv2")
set oService = oProvider.Get("IIsWebService='W3SVC'")
oBindings = Array(0)
Set oBindings(0) = oProvider.Get("ServerBinding").SpawnInstance_()
oBindings(0).IP = ""
oBindings(0).Port = "80"
oBindings(0).Hostname = siteName
ReDim Preserve oBindings(1)
Set oBindings(1) = oProvider.Get("ServerBinding").SpawnInstance_()
oBindings(1).IP = ""
oBindings(1).Port = "80"
oBindings(1).Hostname = "www." & siteName
Dim sSiteObjectPath
sSiteObjectPath = oService.CreateNewSite(siteName, oBindings, wwwPath)
If Err Then
error.Add "Site Creation", "*** Error Creating Site: " & Hex(Err.Number) & ": " & Err.Description & " ***"
WScript.Quit(1)
End If
Set oPath = CreateObject("WbemScripting.SWbemObjectPath")
oPath.Path = sSiteObjectPath
sSitePath = oPath.Keys.Item("")
Set oVirtualDir = oProvider.Get("IIsWebVirtualDirSetting='" & sSitePath & "/ROOT'")
oVirtualDir.AuthFlags = 5 ' AuthNTLM + AuthAnonymous
oVirtualDir.EnableDefaultDoc = True
oVirtualDir.DirBrowseFlags = &H4000003E ' date, time, size, extension, longdate
oVirtualDir.AccessFlags = 513 ' read, script
oVirtualDir.AppFriendlyName = "Root Application"
OK, I'm looking into this, and you are right and wrong. Yes, HttpErrors[] is an array. But not of string. It is an array of HttpError... Now, if I'm reading some of this stuff right, you also need to put in the full list of handlers even if you modify one. So, try iterating this list into your HttpErrors array. Each line is a new array item...
"400,*,FILE,C:\WINDOWS\hel p\iisHelp\ common\400 .htm"
"401,1,FILE,C:\WINDOWS\hel p\iisHelp\ common\401 -1.htm"
"401,2,FILE,C:\WINDOWS\hel p\iisHelp\ common\401 -2.htm"
"401,3,FILE,C:\WINDOWS\hel p\iisHelp\ common\401 -3.htm"
"401,4,FILE,C:\WINDOWS\hel p\iisHelp\ common\401 -4.htm"
"401,5,FILE,C:\WINDOWS\hel p\iisHelp\ common\401 -5.htm"
"401,7,FILE,C:\WINDOWS\hel p\iisHelp\ common\401 -1.htm"
"403,1,FILE,C:\WINDOWS\hel p\iisHelp\ common\403 -1.htm"
"403,2,FILE,C:\WINDOWS\hel p\iisHelp\ common\403 -2.htm"
"403,3,FILE,C:\WINDOWS\hel p\iisHelp\ common\403 -3.htm"
"403,4,FILE,C:\WINDOWS\hel p\iisHelp\ common\403 -4.htm"
"403,5,FILE,C:\WINDOWS\hel p\iisHelp\ common\403 -5.htm"
"403,6,FILE,C:\WINDOWS\hel p\iisHelp\ common\403 -6.htm"
"403,7,FILE,C:\WINDOWS\hel p\iisHelp\ common\403 -7.htm"
"403,8,FILE,C:\WINDOWS\hel p\iisHelp\ common\403 -8.htm"
"403,9,FILE,C:\WINDOWS\hel p\iisHelp\ common\403 -9.htm"
"403,10,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3-10.htm"
"403,11,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3-11.htm"
"403,12,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3-12.htm"
"403,13,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3-13.htm"
"403,15,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3-15.htm"
"403,16,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3-16.htm"
"403,17,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3-17.htm"
"403,18,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3.htm"
"403,19,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3.htm"
"403,20,FILE,C:\WINDOWS\he lp\iisHelp \common\40 3-20.htm"
"404,*,FILE,C:\WINDOWS\hel p\iisHelp\ common\404 b.htm"
"404,2,FILE,C:\WINDOWS\hel p\iisHelp\ common\404 b.htm"
"404,3,FILE,C:\WINDOWS\hel p\iisHelp\ common\404 b.htm"
"405,*,FILE,C:\WINDOWS\hel p\iisHelp\ common\405 .htm"
"406,*,FILE,C:\WINDOWS\hel p\iisHelp\ common\406 .htm"
"407,*,FILE,C:\WINDOWS\hel p\iisHelp\ common\407 .htm"
"412,*,FILE,C:\WINDOWS\hel p\iisHelp\ common\412 .htm"
"414,*,FILE,C:\WINDOWS\hel p\iisHelp\ common\414 .htm"
"415,*,FILE,C:\WINDOWS\hel p\iisHelp\ common\415 .htm"
"500,12,FILE,C:\WINDOWS\he lp\iisHelp \common\50 0-12.htm"
"500,13,FILE,C:\WINDOWS\he lp\iisHelp \common\50 0-13.htm"
"500,15,FILE,C:\WINDOWS\he lp\iisHelp \common\50 0-15.htm"
"500,16,FILE,C:\WINDOWS\he lp\iisHelp \common\50 0.htm"
"500,17,FILE,C:\WINDOWS\he lp\iisHelp \common\50 0.htm"
"500,18,FILE,C:\WINDOWS\he lp\iisHelp \common\50 0.htm"
"500,19,FILE,C:\WINDOWS\he lp\iisHelp \common\50 0.htm"
Obviously, change the ones you need to what you need them to be.
"400,*,FILE,C:\WINDOWS\hel
"401,1,FILE,C:\WINDOWS\hel
"401,2,FILE,C:\WINDOWS\hel
"401,3,FILE,C:\WINDOWS\hel
"401,4,FILE,C:\WINDOWS\hel
"401,5,FILE,C:\WINDOWS\hel
"401,7,FILE,C:\WINDOWS\hel
"403,1,FILE,C:\WINDOWS\hel
"403,2,FILE,C:\WINDOWS\hel
"403,3,FILE,C:\WINDOWS\hel
"403,4,FILE,C:\WINDOWS\hel
"403,5,FILE,C:\WINDOWS\hel
"403,6,FILE,C:\WINDOWS\hel
"403,7,FILE,C:\WINDOWS\hel
"403,8,FILE,C:\WINDOWS\hel
"403,9,FILE,C:\WINDOWS\hel
"403,10,FILE,C:\WINDOWS\he
"403,11,FILE,C:\WINDOWS\he
"403,12,FILE,C:\WINDOWS\he
"403,13,FILE,C:\WINDOWS\he
"403,15,FILE,C:\WINDOWS\he
"403,16,FILE,C:\WINDOWS\he
"403,17,FILE,C:\WINDOWS\he
"403,18,FILE,C:\WINDOWS\he
"403,19,FILE,C:\WINDOWS\he
"403,20,FILE,C:\WINDOWS\he
"404,*,FILE,C:\WINDOWS\hel
"404,2,FILE,C:\WINDOWS\hel
"404,3,FILE,C:\WINDOWS\hel
"405,*,FILE,C:\WINDOWS\hel
"406,*,FILE,C:\WINDOWS\hel
"407,*,FILE,C:\WINDOWS\hel
"412,*,FILE,C:\WINDOWS\hel
"414,*,FILE,C:\WINDOWS\hel
"415,*,FILE,C:\WINDOWS\hel
"500,12,FILE,C:\WINDOWS\he
"500,13,FILE,C:\WINDOWS\he
"500,15,FILE,C:\WINDOWS\he
"500,16,FILE,C:\WINDOWS\he
"500,17,FILE,C:\WINDOWS\he
"500,18,FILE,C:\WINDOWS\he
"500,19,FILE,C:\WINDOWS\he
Obviously, change the ones you need to what you need them to be.
ASKER
I did see it mentioned that it's an array of HTTPError. I didn't know how to make the array of HTTPError/put the above values into the object.
Thank you for your help so far.
Thank you for your help so far.
ASKER
I have seen a way to create an instance of the HTTPError object through Asp.net. I have been able so far to find a way through classic ASP.
Any ideas?
Any ideas?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thank you for the info. I will check out those scripts and see what I can find.
I'm a little fuzzy on what a "multi-string property is". I'm not sure if that means the object is actually an array of strings.
I've tried stuffing just a string into httpError and an array of strings.
Hopefully I can find the answer in one of those scripts.
Thanks again to both of you. Just confirming things helps a ton!
I'm a little fuzzy on what a "multi-string property is". I'm not sure if that means the object is actually an array of strings.
I've tried stuffing just a string into httpError and an array of strings.
Hopefully I can find the answer in one of those scripts.
Thanks again to both of you. Just confirming things helps a ton!
ASKER
I'm going to close this for now since I probably wont be able to look into it further in the near future.
ASKER