2013-07-23 45 views
0

我想下面的工作命令行下進入網頁翻譯部署API(Microsoft.Web.Deployment)代碼:Web部署API和Web管理服務(WMSVC)

"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:contentPath="\\myserver\code_to_deploy" -dest:contentPath="Default Web Site",wmsvc="mysandbox",userName="MyWebDeployUser",password="MyPassword" -allowUntrusted 

我看起來像這樣:

string srcPath = "\\myserver\code_to_deploy"; 
string destPath = "Default Web Site"; 

DeploymentBaseOptions sourceOptions = new DeploymentBaseOptions(); 
sourceOptions.TraceLevel = TraceLevel.Verbose;   
sourceOptions.Trace += new EventHandler<DeploymentTraceEventArgs>(Src_Trace); 

DeploymentBaseOptions destOptions = new DeploymentBaseOptions();    
destOptions.UserName = "MyWebDeployUser"; 
destOptions.Password = "MyPassword"; 
destOptions.AddDefaultProviderSetting("contentPath", "wmsvc", "mysandbox");   
destOptions.AuthenticationType = "basic"; 

destOptions.TraceLevel = TraceLevel.Verbose; 
destOptions.Trace += new EventHandler<DeploymentTraceEventArgs>(Dest_Trace); 

ServicePointManager.ServerCertificateValidationCallback = (s, c, chain, err) => 
{ 
    return true; 
};   
DeploymentSyncOptions syncOptions = new DeploymentSyncOptions(); 
syncOptions.DeleteDestination = true; 

using (DeploymentObject depObj = DeploymentManager.CreateObject(DeploymentWellKnownProvider.ContentPath, srcPath, sourceOptions)) 
{    
    var summary = depObj.SyncTo(DeploymentWellKnownProvider.IisApp, destPath, destOptions, syncOptions); 
} 

當代碼調用'AddDefaultProviderSetting'時,它失敗,說wmsvc不被提供者支持。如果我刪除該行,我會從服務器收到401。任何這樣做或其他幫助的例子非常感謝。

回答

0

我不知道你是否已經找到了解決方案,但這裏是一段代碼,允許使用WMSVC爲那些誰需要它:

 DeploymentBaseOptions destinationOptions = new DeploymentBaseOptions() 
     { 
      UserName = "<user_name>", 
      Password = "<password>", 
      IncludeAcls = false, 
      AuthenticationType = "Basic", 
      UseDelegation = true, 
      ComputerName = "https://<server>:8172/msdeploy.axd?Site=<website>" 
     }; 

     // Use -allowUntrusted option 
     ServicePointManager.ServerCertificateValidationCallback += 
      new RemoteCertificateValidationCallback(
       (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => { return true; }); 

     string package = <zip_package_fullPath>; 
     string parameters = <project_SetParameters_xml_fullPath>; 
     using (var deploymentObject = DeploymentManager.CreateObject(DeploymentWellKnownProvider.Package, package)) 
     { 
      deploymentObject.SyncParameters.Load(parameters); 
      DeploymentSyncOptions syncOptions = new DeploymentSyncOptions(); 

      DeploymentChangeSummary results = deploymentObject.SyncTo(destinationOptions, syncOptions); 
     } 

這是很難找到有關這些主題的文檔。順便說一句,我還沒有成功地使用AddDefaultProviderSetting,即使通過創建一個.exe.configSettings文件,我不知道這是實現你想要的正確方法。

要,而不是創建一個網站的虛擬應用程序,只.SetParameters.xml必須從

<setParameter name="IIS Web Application Name" value="<WebSite>" /> 

改爲

<setParameter name="IIS Web Application Name" value="<WebSite>/<VirtualApp>" /> 

希望這有助於。