我已经抓住了我的头。 请帮我停止划伤。
对于我们遇到的网站问题,我们有一个手动解决方法。 当我们手动执行这些步骤时,解决方法总是有效的,但是运行执行相同步骤的脚本有时可以正常工作,但通常不会。 我的问题: 为什么手动执行这些步骤和在脚本下执行它们有什么不同?
手动步骤是:
正如我所说的,这总是使网站具有完整的function。 这应该是这样的脚本,对不对?
所以我写了一个基本上这样的批处理脚本:
%windir%\system32\inetsrv\appcmd.exe stop site nameOfSite %windir%\system32\inetsrv\appcmd.exe recycle apppool nameOfAppPool curl...(call web method with headers and parameters identical to what IE does) %windir%\system32\inetsrv\appcmd.exe start site nameOfSite
curl调用在Fiddler中与使用IE进行调用相同。 此外,我已经用一个暂停来replacecurl调用,所以脚本给了我一个使用IE调用web方法的机会。 所以我很确定这不是那条线。
我已经把步骤之间的延迟。
我试着开始/停止appPool(而不是回收)。
我试过用Python做同样的事情:
subprocess.check_output([params to call appcmd], shell=True)
这些尝试都不会改变行为:
当脚本失败时,仅仅重新运行脚本就不会工作。 我必须手动执行这些步骤,那么一切都很好。
这对我来说没有意义。 对你来说呢? 有没有一个替代appcmd更紧密地做什么IIS在启动/停止/回收? 我究竟做错了什么?
运行脚本的用户帐户的权限是什么?
我假设你是一个pipe理员,但脚本运行时帐户也是一个pipe理员级别的帐户?
检查…