gpt4 book ai didi

通过 Go 应用程序调用的 IIS appcmd - 无效的 XML 输入

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:51 25 4
gpt4 key购买 nike

我有这个命令,直接在命令行中运行时可以使用。

import "os/exec"
...
out, err := exec.Command("cmd", "/C", `%windir%\system32\inetsrv\appcmd list APP /site.name:"My website" /text:[path='/'].physicalPath`).Output()

当我通过 Go 应用程序运行它时,它会抛出 exit status 3222072890 并显示以下错误消息:

Failed to process input: Invalid XML input - please make sure that your XML is well-formed and follows the required format (HRESULT=c00cee3a).

我已经尝试过更改斜线,使用各种引号,但仍然不起作用。

我在 Windows Server 2012 R2 上使用 IIS 8.5

似乎命令在执行前已损坏。有什么办法可以看到输出命令吗?

最佳答案

这似乎是 golang 库中的错误 - 与 a Golang Github issue #15566 相关.

问题是由/site.name 参数(“我的网站”)中的引号引起的,它被转义了,但不应该被转义。

这次的解决方案是这样的:

import "os/exec"
import "syscall"
...
cmd := exec.Command(`cmd`)
cmd.SysProcAttr = &syscall.SysProcAttr{
CmdLine: `/C %windir%\system32\inetsrv\appcmd list APP /site.name:"My website" /text:[path='/'].physicalPath`,
}
out, err := cmd.Output()

有关详细信息,请参阅:http://www.josephspurrier.com/prevent-escaping-exec-command-arguments-in-go/exec with double quoted argument

关于通过 Go 应用程序调用的 IIS appcmd - 无效的 XML 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42327117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com