如何在Azure启动任务中获取siteroot路径而不是Approt?
我有一个Azure web项目,该项目已在ServiceDefinition.csdef中配置启动任务如何在Azure启动任务中获取siteroot路径而不是Approt?,azure,command-line,Azure,Command Line,我有一个Azure web项目,该项目已在ServiceDefinition.csdef中配置启动任务 <Startup> <Task commandLine="Task.cmd" executionContext="elevated" taskType="simple" /> </Startup> 但启动任务中的目录和实际生产路径不同。(E:\Approt与E:\siteroot\0) 有没有办法在my Task.cmd中获取生产路径 谢谢您将使用一点
<Startup>
<Task commandLine="Task.cmd" executionContext="elevated" taskType="simple" />
</Startup>
但启动任务中的目录和实际生产路径不同。(E:\Approt与E:\siteroot\0)
有没有办法在my Task.cmd中获取生产路径
谢谢您将使用一点PowerShell!您必须创建一个PowerShell脚本并修改cmd。 您的整个PowerShell文件(startup.ps1)应如下所示:
Import-Module WebAdministration
$site = Get-ChildItem IIS:\Sites | Where-Object {$_.State -eq 'Started'}
$siteRoot = $site.PhysicalPAth
$fileExe = "InstallService.exe"
& $fileExe /webpath=$siteRoot
请注意,这没有经过测试,因此不能保证工作正常。
您的新startup.cmd将如下所示:
InstallService.exe /webpath="%cd%"
@echo off
powershell -command "Set-ExecutionPolicy Unrestricted" 2>> err.out
powershell .\startup.ps1 2>> err.out
请慢慢看。以下内容将当前路径放入变量%SCRIPTPATH%:
设置SCRIPTPATH=%~p0
它可以工作,但启动任务通常在创建IIS网站之前执行,因此我们没有启动的角色YetCreat。嗯,你说得对。因为这个问题,我记得使用AppPool默认值而不是直接使用AppPool。一个可能的解决方案是将启动任务设置为后台类型(默认),并放置一些计时器。这不是一个稳健的解决方案。最终有效的解决方案是什么?我想把它包括在我的回答中