0

次のWORKINGコマンドラインをWebデプロイAPI(Microsoft.Web.Deployment)コードに変換しようとしています:

"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 が返されます。これまたは他のヘルプを実行する例は大歓迎です。

4

1 に答える 1

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);
        }

これらのトピックに関するドキュメントを見つけるのは非常に困難です。ところで、.exe.configSettings ファイルを作成しても、AddDefaultProviderSetting の使用に成功していません。目的を達成するための正しい方法かどうかはわかりません。

Web サイトの代わりに仮想アプリケーションを作成するには、.SetParameters.xml のみを変更する必要があります。

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

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

お役に立てれば。

于 2013-11-27T15:17:20.700 に答える