gpt4 book ai didi

azure - 管理 API - 请求正文 XML 无效或未正确指定

转载 作者:行者123 更新时间:2023-12-03 04:45:14 25 4
gpt4 key购买 nike

来自 http://social.msdn.microsoft.com/Forums/en-US/windowsazuretroubleshooting/thread/31b6aedc-c069-4e32-8e8f-2ff4b7c30793 的交叉发帖

我在通过服务管理 API 更改配置时遇到此错误:请求正文 XML 无效或未正确指定

请求正文有效负载:

<?xml version="1.0" encoding="utf-8"?>
<ChangeConfiguration xmlns="http://schemas.microsoft.com/windowsazu
re">
<Configuration>PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxTZXJ2aWNlQ29uZmlndX
JhdGlvbiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIi
B4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxucz0iaHR0cDovL3
NjaGVtYXMubWljcm9zb2Z0LmNvbS9TZXJ2aWNlSG9zdGluZy8yMDA4LzEwL1NlcnZpY2VDb25maWd1cm
F0aW9uIiBzZXJ2aWNlTmFtZT0iIiBvc0ZhbWlseT0iMSIgb3NWZXJzaW9uPSIqIj4KICA8Um9sZSBuYW
1lPSJXZWJSb2xlMSI+CiAgICA8Q29uZmlndXJhdGlvblNldHRpbmdzPgogICAgICA8U2V0dGluZyBuYW
1lPSJNaWNyb3NvZnQuV2luZG93c0F6dXJlLlBsdWdpbnMuRGlhZ25vc3RpY3MuQ29ubmVjdGlvblN0cm
luZyIgdmFsdWU9IlVzZURldmVsb3BtZW50U3RvcmFnZT10cnVlIi8+CiAgICA8L0NvbmZpZ3VyYXRpb2
5TZXR0aW5ncz4KICAgIDxJbnN0YW5jZXMgY291bnQ9IjIiLz4KICAgIDxDZXJ0aWZpY2F0ZXMvPgogID
wvUm9sZT4KPC9TZXJ2aWNlQ29uZmlndXJhdGlvbj4K</Configuration>
</ChangeConfiguration>

我向其传递以下配置:

$configuration = '<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" serviceName="" osFamily="1" osVersion="*">
<Role name="WebRole1">
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true"/>
</ConfigurationSettings>
<Instances count="2"/>
<Certificates/>
</Role>
</ServiceConfiguration>';

有谁知道为什么会出现这个错误?我怀疑这与编码有关,但不确定。

最佳答案

您是直接从 API 调用中获取此信息吗?如果是这样,它应该返回一个 x-ms-requestid header 。

如果你拿着它并大声喊出

https://management.core.windows.net/<subscriptionID/operations/<requestId>

这应该为您提供有关正在发生的事情的更详细消息,通常会告诉您到底发生了什么。

除此之外,我还会检查以下内容:

1.) 检查您的编码,然后再次检查。我之所以提到这一点,是因为当我第一次包装 API 时,我遇到了一个问题,即我的编码搞砸了。所以我最终所做的是编写一些代码来读取文件,对其进行编码,解码,然后将其保存到新文件中。然后对两者进行二进制比较。我终于发现它们只有一个字节不同,这就破坏了整个事情。

2.) 检查您的配置。通过门户将确切的配置文件上传到您的角色,看看它是否被接受。

3.) 检查 API 版本 header 。不确定 PHP 的 SDK,但如果可能的话,您可以显式检查/设置发送到 api 的 x-ms-version header 吗?

4.) 导致有效的失败,并从那里进行逆向工程。如果所有其他方法都失败,请传入空白或随机/无效的编码字符串。然后使用 GetOperationStatus 端点确保您收到“配置无效”之类的错误。这样您就知道您的请求已被接受,但编码/配置抛出了错误。

编辑:来自您的回复和 MSDN

5.) 尝试省略 XML 声明

<?xml version="1.0" encoding="utf-8"?>

来自请求正文。当我运行您的确切请求与我自己的 .net api 包装器创建的相同请求时,唯一的区别是 XML 声明不在 POST 正文中。包装器生成的类适合我。

关于azure - 管理 API - 请求正文 XML 无效或未正确指定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5014610/

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