This is a "great" article published on http://www.iis.net
http://www.iis.net/News/Item.aspx?i=1191
Check it out!
This is a "great" article published on http://www.iis.net
http://www.iis.net/News/Item.aspx?i=1191
Check it out!
This tip shows how to have a return address display with a friendly name instead of an email address.
How to use in a VBS script
Dim imsg
Set iMsg = Createobject("cdo.message")
With iMsg
.To = "John Monday <[email protected]>"
.From = "Steve Friday <[email protected]>"
.Subject = "A Subject Line: " & Now()
.TextBody = "A Text body message"
.Send
End With
Set iMsg = nothing
Here is how to use in Classic ASP webpage.
<%
Dim imsg
Dim strMessage
Set iMsg = Server.Createobject("cdo.message")
With iMsg
.To = "John Monday <[email protected]>"
.From = "Steve Friday <[email protected]>"
.Subject = "A Subject Line: " & Now()
.TextBody = "A Text body message"
.Send
End With
Set iMsg = nothing
strMessage = “Message sent:” & Now()
%>
<html>
<body>
<% = strMessage %>
</body>
</html>
Reference links
One frequent question I see in the newsgroups is "How do I schedule a task to run in IIS?” This article discusses one technique using a VBS Script and Windows Task Scheduler. Using Windows Task scheduler allows custom jobs to execute without having to stay logged into a server. You can use this technique to request web pages frequently on a timed basis. This keeps the page in-memory providing a better performance. This could also request web pages to perform other administrative tasks.
Here are steps to get started.
Write your VBS script
The script makes an HTTP request to a webpage on a timed basis. (I.E. every 5 minutes).
Call LogEntry()
Sub LogEntry()
‘Force the script to finish on an error.
On Error Resume Next
‘Declare variables
Dim objRequest
Dim URL
Set objRequest = CreateObject("Microsoft.XMLHTTP")
‘Put together the URL link appending the Variables.
URL = "http://www.YourDomain.com/track.aspx
‘Open the HTTP request and pass the URL to the objRequest object
objRequest.open "POST", URL , false
‘Send the HTML Request
objRequest.Send
‘Set the object to nothing
Set objRequest = Nothing
End Sub
Track.aspx webpage
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="tracklog.aspx.vb" Inherits="Tracklog" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Log Page</title>
</head>
<body>
<form id="form1" runat="server">
<div></div>
</form>
</body>
</html>
Tracklog.aspx.vb code behind
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Partial Class Tracklog
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
‘Put your code in that would process when Track.aspx is requested
Response.write(“Track.aspx was called:” & System.DateTime.Now())
End Sub
End Class
How to schedule a task using Windows Task Scheduler
A scheduled task will allow a person to schedule any script, program, or document to run. Scheduled Tasks run at the time specified which could be multiple times per minute, hour, or day. The KB Article explains step-by-step.
· http://support.microsoft.com/default.aspx?scid=kb;en-us;308569&sd=tech
Refererence links
This is worth watching if you are interested in learning more about IIS7.
(Ken Schaefer (IIS MVP) and Chewy Chong)
http://channel9.msdn.com/Showpost.aspx?postid=233984
Several videos by the Channel gang regarding IIS7.
http://channel9.msdn.com/tags/IIS
SMTPDiag is a handy tool for tracking down SMTP based issues. I recently used in a newsgroup posting that was helpful along with a few other times at http://www.orcsweb.com. It is definitely one of those tools worth having if you have to troubleshoot email issues.
Bernard Cheah posting is helpful also.
I was recently extracting information from an application event log for a particular issue. Using Logparser made it very simple to just get what I needed. Hope this helps.
‘Extracts information for ‘mydomain.com’ and puts in a file called filename.csv
LogParser "SELECT SourceName,TimeGenerated,TimeWritten,Message INTO filename.csv FROM \ServerApplication where Message Like ‘%mydomain.com%’" -o:CSV
I wrote an article how to install Dotnetnuke 4.x on a Windows 2003 SP 1 domain controller. Here is a "gotcha" I wanted to pass along thanks to Michael J. van Zwieten. Thanks a bunch for passing this along. I updated the article. Here is Michaels comments.
————————————-
I finally found an article that worked for me…
( xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" )
I removed the Attribute and ran the website once again and much to my surprise the website compiled and ran all the installation scripts.
————————————-
Here is the link to my original article.
http://www.iislogs.com/articles/dnnonw2k3dc/default.aspx
Steve Schofield
Windows Server MVP – IIS
ASPInsider Member – MCP
I try to visit as many IIS7 places as possible. One item mentioned not in the IIS7 GUI is how to add MIME types. Well, I couldn’t figure how to add them but I can ‘read’ them from my Vista RC1 machine. How to add will be in another posting. This code below doesn’t build a list, but gives the basics for reading the values stored in the applicationHost.config file. Happy IIS7 geeking!
Dim sm As New Microsoft.Web.Administration.ServerManager()
Dim appHostConfig As Configuration = sm.GetApplicationHostConfiguration()
Dim section As ConfigurationSection = appHostConfig.GetSection("system.webServer/staticContent")
For Each element As ConfigurationElement In section.GetCollection()
Dim fileExtension As String = element.Item("fileExtension").ToString
Dim mimeType As String = element.Item("mimeType").ToString
Next
I installed Vista RC1 / 5600 edition and have been experimenting with the Microsoft.Web.Administration namespace. These are examples I got working on my local machine running Vista Ultimate Edition. Hope these help. If you find a more efficient way, by all means pass them along! These are my first attempt to understand and learn the new Microsoft.Web.Administration Namespace.
‘Create a new site called SteveSchofield.net
Dim objSite As New Microsoft.Web.Administration.ServerManager
objSite.Sites.Add("SteveSchofield.net", "c:domainssteveschofield.net", 80)
objSite.Sites("SteveSchofield.net").ServerAutoStart = True
objSite.CommitChanges()
‘Add an ManagedPipelineMode.Integrated application pool
Dim objAppPool As New Microsoft.Web.Administration.ServerManager
objAppPool.ApplicationPools.Add("SteveSchofield.net")
objAppPool.ApplicationPools("SteveSchofield.net").ManagedPipelineMode = ManagedPipelineMode.Integrated
objAppPool.ApplicationPools("SteveSchofield.net").AutoStart = True
objAppPool.CommitChanges()
‘Add an ManagedPipelineMode.Classic application pool
Dim objAppPool As New Microsoft.Web.Administration.ServerManager
objAppPool.ApplicationPools.Add("SteveSchofield.net")
objAppPool.ApplicationPools("SteveSchofield.net").ManagedPipelineMode = ManagedPipelineMode.Classic
objAppPool.ApplicationPools("SteveSchofield.net").AutoStart = True
objAppPool.CommitChanges()
‘Create a Site, Application Pool (ManagedPipelineMode.Integrated) and add new site to the new App pool that was just created.
Dim objSite As New Microsoft.Web.Administration.ServerManager
objSite.Sites.Add("SteveSchofield.net", "c:domainssteveschofield.net", 80)
objSite.ApplicationPools.Add("SteveSchofield.net").ManagedPipelineMode = ManagedPipelineMode.Integrated
objSite.Sites("SteveSchofield.net").Applications("/").ApplicationPoolName = "SteveSchofield.net"
objSite.CommitChanges()
‘Create a Site, Application Pool (ManagedPipelineMode.Classic) and add new site to the new App pool that was just created.
Dim objSite As New Microsoft.Web.Administration.ServerManager
objSite.Sites.Add("SteveSchofield.net", "c:domainssteveschofield.net", 80)
objSite.ApplicationPools.Add("SteveSchofield.net").ManagedPipelineMode = ManagedPipelineMode.Classic
objSite.Sites("SteveSchofield.net").Applications("/").ApplicationPoolName = "SteveSchofield.net"
objSite.CommitChanges()
‘List application pools using IIS7 namespace
Dim Server As New Microsoft.Web.Administration.ServerManager
Dim col As ApplicationPoolCollection
Dim AppPoolName as string
Dim x as integer
col = Server.ApplicationPools
For x = 0 To col.Count – 1
AppPoolName = col(x).Name
Next
‘List sites using IIS7 namespace
Dim Server As New Microsoft.Web.Administration.ServerManager
Dim col As SiteCollection
Dim SiteName as string
Dim x as integer
col = Server.Sites
For x = 0 To col.Count – 1
SiteName = col(x).Name
Next
‘List all worker processes using IIS7 namespace. (Note this is just an example, there are other properties that can retrieve information about worker processes).
Dim Server As New Microsoft.Web.Administration.ServerManager
Dim col As Microsoft.Web.Administration.WorkerProcessCollection
col = Server.WorkerProcesses
dim x as integer
For x = 0 To col.Count – 1
Response.Write(col.Item(x).ApplicationDomains(x).Id & "<BR>")
Response.Write(col.Item(x).ApplicationDomains(x).Idle & "<BR>")
Response.Write(col.Item(x).ApplicationDomains(x).PhysicalPath & "<BR>")
Response.Write(col.Item(x).ApplicationDomains(x).VirtualPath & "<BR>")
Response.Write(col.Item(x).ApplicationDomains(x).WorkerProcess.ProcessGuid & "<BR>")
Next
‘Recycle Application Pool
Dim RecycleSite As New ServerManager
RecycleSite.ApplicationPools("SteveSchofield.net").Recycle()
‘WebPages to help test if recycle actually worked.
Place all webpages in the http://localhost website running IIS7
Create webpage called Default.aspx
Create webpage called Recycle.aspx
Create webpage called Recycle.aspx.vb
Paste the code listed below for the ‘Default.aspx webpage
Paste the code listed below for the Recycle.aspx webpage
Paste the code listed below for the Recycle.aspx.vb webpage
‘Test out the process
Open http://localhost/default.aspx?id=Show
This will output the datetime session variable to the webpage
Change the URL to http://localhost/default.aspx?id=Hide
Refresh the webpage, the Session variable won’t change
Run the RecycleSite code in a separate webpage
Refresh the default.aspx webpage
The default.aspx webpage should not show any values
‘Default.aspx to show session variable
<html>
<body>
<% If Request.Querystring("ID") = "Show" Then %>
<% Session("Steve") = System.DateTime.Now() %>
<% End If %>
<% response.write(Session("Steve")) %>
</body>
</html>
‘Recycle.aspx webpage
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Click Button to recycle<br /><br />
<asp:Button ID="Button2" runat="server" Text="Button" /> </div>
</form>
</body>
</html>
‘Recycle.aspx.vb code behind file
Imports Microsoft.Web.Administration
Partial Class _Default
System.Web.UI.Page
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim RecycleSite As New ServerManager
RecycleSite.ApplicationPools("SteveSchofield.net").Recycle()
End Sub
End Class
Here is sample code to return a collection of Application Pools using WMI and IIS7. This is dynamic because this could be used to retrieve from a local machine or altering the code to connect to a remote server running IIS7. Here is an article that explains what IIS7 features are on various versions of Vista. This is bound to confuse! ? http://www.iis.net/1100/SinglePageArticle.ashx
‘Using System.Management to retrieve WMI / IIS7 info.
‘Define the WMI connection information
Dim options As New System.Management.ConnectionOptions()
‘options.Username = strUID
‘options.Password = strPWD
‘Define the Scope information / Note the path defined.
Dim scope As System.Management.ManagementScope
scope = New System.Management.ManagementScope(\.rootWebAdministration)
‘Define Query and Searcher objects
Dim WMIQuery As New System.Management.SelectQuery("SELECT * FROM ApplicationPool")
Dim searcher As New System.Management.ManagementObjectSearcher(scope, WMIQuery)
‘Connect to WMI
Try
scope.Connect()
Catch ex As Exception
Exit Sub
End Try
‘Dim variables for information that will be returned
Dim AppPoolName As System.Management.ManagementObject
Dim col As System.Management.ManagementObjectCollection
‘Return the collection
col = searcher.Get()
‘Write the list of Application Pools to webpage
For Each AppPoolName In col
Response.Write(AppPoolName.GetPropertyValue("Name").ToString() & "<BR>")
Next
Here is the IIS7’ish way of using the Microsoft.Web.Administration
Dim Server As New Microsoft.Web.Administration.ServerManager
Dim col As ApplicationPoolCollection
col = Server.ApplicationPools
Dim AppPoolName As String = ""
Dim x As Integer = 0
For x = 0 To col.Count – 1
AppPoolName = col(x).Name
Next
‘Return a list of Sites
Dim Server As New Microsoft.Web.Administration.ServerManager
Dim col As SiteCollection
col = Server.Sites
Dim SiteName As String = ""
Dim x As Integer = 0
For x = 0 To col.Count – 1
SiteName = col(x).Name
Next