如何:配置 IIS 5.0 和 IIS 6.0 以部署 WPF 应用程序

更新:2007 年 11 月

您可以从大多数 Web 服务器部署 Windows Presentation Foundation (WPF) 应用程序,前提是这些服务器配置了适当的多用途 Internet 邮件扩展 (MIME) 类型。默认情况下,Microsoft Internet 信息服务 (IIS) 7.0 配置有这些MIME 类型,但 Microsoft Internet 信息服务 (IIS) 5.0 和 Microsoft Internet 信息服务 (IIS) 6.0 则不然。

本主题介绍如何配置 Microsoft Internet 信息服务 (IIS) 5.0 和 Microsoft Internet 信息服务 (IIS) 6.0 来部署 WPF 应用程序。

本主题包括下列各节。

  • 调整内容过期设置
  • 注册 MIME 类型和文件扩展名
说明:

您可以检查注册表中的 UserAgent 字符串,确定系统是否安装了 .NET Framework。有关检查 UserAgent 字符串以确定系统是否安装了 .NET Framework 的详细信息和脚本,请参见如何:检测是否安装了 .NET Framework 3.0

调整内容过期设置

您应当将内容过期设置调整为 1 分钟。下面的过程简要介绍了如何对 IIS 执行此操作。

  1. 单击**“开始”菜单,指向“管理工具”,然后单击“Internet 信息服务(IIS)管理器”**。您还可以使用“%SystemRoot%\system32\inetsrv\iis.msc”从命令行启动此应用程序。

  2. 展开 IIS 树,直到找到**“默认网站”**节点。

  3. 右击**“默认网站”,从上下文菜单中选择“属性”**。

  4. 选择**“HTTP 头”**选项卡,然后单击“启用内容过期”。

  5. 将内容设置为 1 分钟后过期。

注册 MIME 类型和文件扩展名

必须注册几种 MIME 类型和文件扩展名,客户端系统上的浏览器才能加载正确的处理程序。需要添加以下类型:

扩展名

MIME 类型

.manifest

application/manifest

.xaml

application/xaml+xml

.application

application/x-ms-application

.xbap

application/x-ms-xbap

.deploy

application/octet-stream

.xps

application/vnd.ms-xpsdocument

说明:

您不需要在客户端系统上注册 MIME 类型或文件扩展名。它们是在您安装 Microsoft .NET Framework时自动注册的。

下面的 Microsoft Visual Basic Scripting Edition (VBScript) 示例自动将必要的 MIME 类型添加到 IIS。若要使用此脚本,请将代码复制到服务器上的 .vbs 文件。然后,通过从命令行运行此文件或者在 Microsoft Windows 资源管理器中双击此文件来运行脚本。

' This script adds the necessary Windows Presentation Foundation MIME types 
' to an IIS Server.
' To use this script, just double-click or execute it from a command line.
' Running this script multiple times results in multiple entries in the IIS MimeMap.

Dim MimeMapObj, MimeMapArray, MimeTypesToAddArray, WshShell, oExec
Const ADS_PROPERTY_UPDATE = 2 

' Set the MIME types to be added
MimeTypesToAddArray = Array(".manifest", "application/manifest", ".xaml", _
    "application/xaml+xml", ".application", "application/x-ms-application", _
    ".deploy", "application/octet-stream", ".xbap", "application/x-ms-xbap", _
    ".xps", "application/vnd.ms-xpsdocument") 

' Get the mimemap object 
Set MimeMapObj = GetObject("IIS://LocalHost/MimeMap")

' Call AddMimeType for every pair of extension/MIME type
For counter = 0 to UBound(MimeTypesToAddArray) Step 2
    AddMimeType MimeTypesToAddArray(counter), MimeTypesToAddArray(counter+1)
Next

' Create a Shell object
Set WshShell = CreateObject("WScript.Shell")

' Stop and Start the IIS Service
Set oExec = WshShell.Exec("net stop w3svc")
Do While oExec.Status = 0
    WScript.Sleep 100
Loop

Set oExec = WshShell.Exec("net start w3svc")
Do While oExec.Status = 0
    WScript.Sleep 100
Loop

Set oExec = Nothing

' Report status to user
WScript.Echo "Windows Presentation Foundation MIME types have been registered."

' AddMimeType Sub
Sub AddMimeType (Ext, MType)

    ' Get the mappings from the MimeMap property. 
    MimeMapArray = MimeMapObj.GetEx("MimeMap") 

    ' Add a new mapping. 
    i = UBound(MimeMapArray) + 1 
    Redim Preserve MimeMapArray(i) 
    Set MimeMapArray(i) = CreateObject("MimeMap") 
    MimeMapArray(i).Extension = Ext 
    MimeMapArray(i).MimeType = MType 
    MimeMapObj.PutEx ADS_PROPERTY_UPDATE, "MimeMap", MimeMapArray
    MimeMapObj.SetInfo
    
End Sub
说明:

运行此脚本多次会在 Microsoft Internet 信息服务 (IIS) 5.0 或 Microsoft Internet 信息服务 (IIS) 6.0 元数据库中创建多个 MIME 映射项。

运行此脚本后,您可能不会从 Microsoft Internet 信息服务 (IIS) 5.0 或 Microsoft Internet 信息服务 (IIS) 6.0 Microsoft 管理控制台 (MMC) 中看到其他 MIME 类型。但是,这些 MIME 类型已添加到 Microsoft Internet 信息服务 (IIS) 5.0 或 Microsoft Internet 信息服务 (IIS) 6.0 元数据库中。下面的脚本将显示 Microsoft Internet 信息服务 (IIS) 5.0 或 Microsoft Internet 信息服务 (IIS) 6.0 元数据库中的所有 MIME 类型。

' This script lists the MIME types for an IIS Server.
' To use this script, just double-click or execute it from a command line 
' by calling cscript.exe

dim mimeMapEntry, allMimeMaps

' Get the mimemap object.
Set mimeMapEntry = GetObject("IIS://localhost/MimeMap")
allMimeMaps = mimeMapEntry.GetEx("MimeMap")

' Display the mappings in the table.
For Each mimeMap In allMimeMaps
    WScript.Echo(mimeMap.MimeType & " (" & mimeMap.Extension + ")")
Next

将脚本另存为 .vbs 文件(例如,DiscoverIISMimeTypes.vbs),然后从命令提示窗口使用以下命令运行它:

cscript DiscoverIISMimeTypes.vbs