Enabling metaKey="siteName" Syntax

Applies To: Windows 7, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008 R2, Windows Vista, Windows XP

This topic shows the delegation rules that are required to allow the metaKey provider to take a virtual path argument instead of a metabase path argument when you use the Web Deployment handler.

The Web Deployment Handler

The Web Deploy handler uses the Web Management Service (WMSvc) to allow non-administrative users to access the sites and applications to which they have been delegated access by using a URL argument with the computerName provider setting (for example, computername=https://serverName/agent.mwd?Site=Site1). The handler is useful for Web hosting because it gives users control over the publishing of their own content while preventing them from having administrative rights on the Web server that hosts their content.

The metaKey Provider

You can use the metaKey provider to publish IIS 6.0 sites and applications to an IIS 7 server. The metaKey provider can take as an argument either a valid metabase path (such as lm/w3svc/1/root), or a virtual path (such as "Fabrikam Site 1"). On IIS 6.0, the site or application name can be found in the MetaBase.xml file in the ServerComment property of the Web site or application.

Delegation Rules are Required

To enable the metaKey="Fabrikam Site 1" syntax when you use the metaKey provider with the handler, you must first put certain delegation rules in the Administration.config file on the IIS 7 server. By default, the Administration.config file is located in the %windir%\system32\inetsrv\config folder.

The rule sets required for sites and applications are different. Example commands and corresponding configuration settings are given for each.

Delegation rules for metaKey="siteName"

Example Command

The following command uses the metaKey provider to synchronize the IIS. 6.0 "Default Web Site" website on the source computer to the destination computer Server1 by using the Web Management Service handler.

msdeploy.exe -verb:sync -source:metaKey="Default Web Site" -dest:metaKey="Site1",computername=https://Server1:8172/msdeploy.axd?Site=Site1,username=<userName>,password=<password>,authType=basic -allowUntrusted

Example Settings

The following table displays the Administration.config file delegation settings that are necessary to implement the example command.

Provider Path Description Example Path Identities to Allow

metaKey

metabase path

lm/w3svc/1

user, runas identity

metaKey

virtual path

Site1

user

dirPath

physical content path

c:\inetpub\wwwroot

user

dirPath

physical php path

c:\php

user

rootwebconfig32

virtual path

Default Web Site

user

machineconfig32

virtual path

Default Web Site

user

rootwebconfig64

virtual path

Default Web Site

user

machineconfig64

virtual path

Default Web Site

user

Example Configuration

The following XML shows how the example settings are implemented in the Administration.config file.

<delegation allowAdministrators="false">

   <rule providers="metaKey" actions="*" path="/lm/w3svc/1">
      <permissions>
         <user name="<userName>" isRole="false" accessType="Allow" />
      </permissions>

      <runAs identityType="SpecificUser" userName="administrator" password="<password>" />
   </rule>

   <rule providers="metaKey" actions="*" path="Site1">
      <permissions>
         <user name="<userName>" isRole="false" accessType="Allow" />
      </permissions>
   </rule>

   <rule providers="dirpath" actions="*" path="d:\inetpub\wwwroot">
      <permissions>
         <user name="<userName>" isRole="false" accessType="Allow" />
      </permissions>
   </rule>

   <rule providers="dirpath" actions="*" path="d:\php">
      <permissions>
         <user name="<userName>" isRole="false" accessType="Allow" />
      </permissions>
   </rule>

   <rule providers="rootwebconfig32" actions="*" path="Default Web Site">
      <permissions>
         <user name="<userName>" isRole="false" accessType="Allow" />
      </permissions>
   </rule>

   <rule providers="machineconfig32" actions="*" path="Default Web Site">
      <permissions>
         <user name="<userName>" isRole="false" accessType="Allow" />
      </permissions>
   </rule>

   <rule providers="rootwebconfig64" actions="*" path="Default Web Site">
      <permissions>
         <user name="<userName>" isRole="false" accessType="Allow" />
      </permissions>
   </rule>

   <rule providers="machineconfig64" actions="*" path="Default Web Site">
      <permissions>
         <user name="<userName>" isRole="false" accessType="Allow" />
      </permissions>
   </rule>
</delegation>

Delegation rules for metaKey="siteName/applicationName"

Example Command

The following command uses the metaKey provider to synchronize the IIS. 6.0 "Default Web Site/root/App1" web application on the source computer to WebSite1/root/App1 on destination server Server1 by using the Web Management Service handler.

msdeploy –verb:sync -source:metaKey="Default Web Site/root/App1" -dest:metaKey="WebSite1/root/App1",computername=https://Server1:8172/msdeploy.axd?Site=WebSite1,username=<userName>,password=<password>,authType=basic -allowUntrusted

Example Settings

The following table displays the Administration.config file delegation settings that are necessary to implement the example command.

Provider Path Description Example Path Identities to Allow

metaKey

metabase path

lm/w3svc/1/root/App1

user, runas identity

metaKey

virtual path

WebSite1/root/App1

user

dirPath

physical php path

c:\php

user

Example Configuration

The following XML shows how the example settings are implemented in the Administration.config file.

<delegation allowAdministrators="false">

   <rule providers="metaKey" actions="*" path="/lm/w3svc/1/root/App1">
      <permissions>
         <user name="<userName>" isRole="false" accessType="Allow" />
      </permissions>

      <runAs identityType="SpecificUser" userName="administrator" password="<password>" />
   </rule>

   <rule providers="metaKey" actions="*" path="WebSite1/root/App1">
      <permissions>
         <user name="<username>" isRole="false" accessType="Allow" />
      </permissions>
   </rule>

   <rule providers="dirpath" actions="*" path="d:\php">
      <permissions>
         <user name="<username>" isRole="false" accessType="Allow" />
      </permissions>
   </rule>
</delegation>

See Also

Concepts

Configuring the Web Deployment Handler
Using Web Deploy Remotely
Web Deploy metaKey Provider
Web Deploy Provider Settings