fer*_*ero 5 api rest azure ssl-certificate
我目前正致力于为Windows Azure托管服务的自动部署过程.使用调用来完美地创建.cspkg和.cscfg文件msbuild.现在我正在编写一个小型.NET控制台应用程序,它应该使用Management REST API将这些文件部署到Azure.
关于API本身没有问题.我可以使用我的一个管理证书向API发送请求.我将.cspkg文件上传到Azure BLOB存储,然后尝试调用Upgrade Deployment.但每次我尝试时,都会收到一条"400 Bad Request"回复,指出没有找到带有指纹xy的证书.此证书是我用于自定义域(DNS CNAME)的HTTPS 的SSL证书(不是管理证书).
而现在,整个事情变得有趣:
当我在Visual Studio中使用"发布"命令部署文件时,没有问题.(我比较了VS和我的输出中的.cscfg/ .cspkgfiles msbuild:除了几个GUID之外,它们是相同的).此外,在我的浏览器中使用Silverlight Management thingy,我甚至可以上传我使用API无法上传的生成文件.
当我使用该List Certificates调用检索所有证书的列表时,显然缺少证书.我也可以使用该Get Certificate调用检索其数据.
那么为什么Azure一直告诉我在使用Upgrade Deployment呼叫时没有找到证书?有人经历过类似的事吗?有没有人在对我暗示?提前致谢.
PS:这就是Azure在我使用API时所说的:
<Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Code>BadRequest</Code>
<Message>The certitficate with thumbprint 7b232c4a2d6e3deadbeef120d5dbc1fe8049fbea was not found.</Message>
</Error>
Run Code Online (Sandbox Code Playgroud)
PPS:是的,答复中的单词certitficate不是certificate.
好的,在使用List Subscription OperationsAPI 调用找出 Visual Studio 调用什么来部署应用程序后,我找到了解决方案。
事实证明,我用于 API 请求的 URL 是错误的,但是:恕我直言,我责怪 Microsoft 糟糕地记录了其Azure 管理 API。
在他们的文档中,他们写的要使用的 URL 是:
https://management.core.windows.net/<subscription-id>/services/hostedservices/<service-name>/deploymentslots/<deployment-slot>/?comp=upgrade
描述如下:
要生成请求 URI,请将 <subscription-id> 替换为您的订阅 ID,将 <service-name> 替换为您的服务名称,将 <deployment-slot> 替换为登台或生产,将 <deployment-name> 替换为唯一名称您的部署。
他们忘记提及的是,您必须使用服务的DNS 名称,而不是名称!他们至少可以返回一条适当的错误消息,告诉您服务名称无效、不存在或不属于您的订阅 ID,而不是抱怨某些证书问题。
谢谢微软,这花了我两天多的时间。
| 归档时间: |
|
| 查看次数: |
1824 次 |
| 最近记录: |