Próbuję uruchomić obiekt ProjectName.deply.cmd generowany przez MSBuild po przekazaniu parametru /p:DeployOnBuild=True
. Jeden z argumentów "NazwaKomputera" ma zostać przekazany jako https://WebServer01:8172/MSDeploy.axd?SiteName=MySiteName
. Moja linia poleceń byłobyJak przekazać nazwę witryny w ProjectName.deploy.cmd
ProjectName.deploy.cmd /Y /M:https://WebServer01:8172/MSDeploy.axd?Site=MySiteName
-AllowUntrusted /U:DeployUserName /P:Password /A:Basic
Zwraca
Error: Unrecognized argument 'MySiteName'. All arguments must begin with "-".
rzeczywista komenda, która jest wykonywana jest
"C:\Program Files\IIS\Microsoft Web Deploy V3\\msdeploy.exe"
-source:package='Y:\ProjectName.zip'
-dest:auto,computerName='https://WebServer01:8172/MSDeploy.axd?Site',userName='DeployUserName',password='Password',authtype='Basic',includeAcls='False'
-verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension
-disableLink:CertificateExtension
-setParamFile:"Y:\ProjectName.SetParameters.xml"
MySiteName
-AllowUntrusted
Należy zauważyć, że argument/M https://WebServer01:8172/MSDeploy.axd?Site=MySiteName
jest podzielony na dwa argumenty, a co za tym idzie tworzenie computerName='https://WebServer01:8172/MSDeploy.axd?Site'
i dodatkowego argumentu MySiteName
.
Przeszedłem przez Running a deployment package with quoted parameters fails in Visual Studio 2010 Service Pack 1, ale to zajmuje się tylko ArgMsDeployAdditionalFlags
, a nie argumentami, np. /M:ComputerName
.
Gdy NazwaLokacji nie jest przekazywana, mogę zrobić grzywny wdrażania z użytkownikiem, który miał uprawnienia administratora na serwerze, ale kiedy jest używany standardowy DeployUserName użytkownik IIS otrzymuję 401
ProjectName.deploy.cmd /Y /M:https://WebServer01:8172/MSDeploy.axd
-AllowUntrusted /U:DeployUserName /P:Password /A:Basic
Serwer zwraca 401
Error Code: ERROR_USER_UNAUTHORIZED
More Information: Connected to the remote computer ("WebServer01") using the Web
Management Service, but could not authorize. Make sure that you are using the
correct user name and password, that the site you are connecting to exists, and
that the credentials represent a user who has permissions to access the site.
Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED.
Error: The remote server returned an error: (401) Unauthorized.
uprawnień dla danego użytkownika są w porządku, jak publikuje od VS2012
z MSDeploy
profilu przy użyciu tego użytkownika działa dobrze. Mogę również zbudować polecenie msdeploy.exe
i to również działa dobrze. Muszę użyć ProjectName.deploy.cmd
, ponieważ jest on produkowany jako część Team Build
z .
To był literówka w pytaniu. Naprawiłem to. Problem nie jest samym argumentem. Jest to sposób = jest obsługiwany przez wiersz polecenia, a następnie uporządkowany w skrypcie deploy.cmd i przekazywany dalej do msdeploy.exe. –
@amit_g - Zobacz moją zaktualizowaną odpowiedź. –
Jestem pewien, że spróbowałem tego razem z innymi wariacjami, aby uciec przed =, ale tego dnia żaden z nich nie zadziałał :(Dzisiaj zacząłem od tego i działało to w pierwszej próbie. Było kilka innych problemów związanych z bezpieczeństwem, ale te były proste Przy tym działaniu nie będę potrzebował uprawnień administratora dla użytkownika instalacji (tego właśnie chciałem) .Dziękuję @Richard za pomoc. –