以编程方式在IIS中注册Silverlight MIME类型

时间:2009-02-11 17:59:08

标签: c# silverlight mime

我正在为silverlight应用程序创建一个安装程序,并希望能够自动为IIS注册.xap扩展名。有没有办法在不编辑注册表的情况下完成此操作?如果没有,我需要做什么注册表项?谢谢!

1 个答案:

答案 0 :(得分:4)

  1. 开始 - >运行inetmgr(启动IIS管理控制台)
  2. 点击MIME类型
  3. 点击添加.. .xap文件 应用程序/ x-Silverlight的应用
  4. 按OK
  5. 或者您可以将此代码保存到文本文件并在服务器上执行:

    <强> AddMimeType.vbs

    Dim VPath
    'This changes setting at machine level, you may change it to a different path
    VPath = "IIS://localhost/MimeMap"
    
    'Add/Update the type for DLR language extension
    UpdateMime ".xap", "application/x-silverlight-app"
    
    'Search for the given extension and update its type
    'when not found, add it into the collection
    Sub UpdateMime(Extension, NewType)
        Dim LocalMimeMap, MimeMap, MMItem, aMimeMapNew()
        Dim i 
        i = 0
        Const ADS_PROPERTY_CLEAR = 1
        Const ADS_PROPERTY_UPDATE = 2
        Set LocalMimeMap = GetObject(VPath)
        MimeMap = LocalMimeMap.GetEx("MimeMap")
        Dim found
        found = False
        For Each MMItem In MimeMap
          ReDim Preserve aMimeMapNew(i)
          Set aMimeMapNew(i) = CreateObject("MimeMap")
          aMimeMapNew(i).Extension = MMItem.Extension
          If MMItem.Extension = Extension Then
              found = True
              MsgBox("Update type of extension " + MMItem.Extension + " from " +     MMItem.MimeType + " to " + NewType)
              aMimeMapNew(i).MimeType = NewType
          Else
              aMimeMapNew(i).MimeType = MMItem.MimeType
          End If
          i = i + 1
        Next
        If found Then
            LocalMimeMap.PutEx ADS_PROPERTY_UPDATE, "MimeMap", aMimeMapNew
            LocalMimeMap.SetInfo
        Else
            MsgBox("Add new extension " + Extension + " with type " + NewType)
            AddMime Extension, NewType
        End If
    End Sub
    
    Sub AddMime(ExtensionToAdd, MimeTypeToAdd)
        Dim LocalMimeMap, MimeMap
        Dim i
        Const ADS_PROPERTY_UPDATE = 2
        Set LocalMimeMap = GetObject(VPath)
        MimeMap = LocalMimeMap.GetEx("MimeMap")
        i = UBound(MimeMap)+1
        Redim Preserve MimeMap(i) 
        Set MimeMap(i) = CreateObject("MimeMap") 
        MimeMap(i).Extension = ExtensionToAdd
        MimeMap(i).MimeType = MimeTypeToAdd
        LocalMimeMap.PutEx ADS_PROPERTY_UPDATE,"MimeMap",MimeMap 
        LocalMimeMap.SetInfo
    End Sub