我正在尝试使用REST APIs创建服务总线命名空间。以下是我的代码:
var uri = string.Format("https://management.core.windows.net/{0}/services/ServiceBus/Namespaces/{1}", subscriptionId, sericebusToCreate);
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "PUT";
request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);
request.Headers.Add("x-ms-version", "2014-10-01");
var requestContent = @"<NamespaceDescription xmlns=""http://schemas.microsoft.com/netservices/2010/10/servicebus/connect"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">
<Name>" + sericebusToCreate + @"</Name>
<Region>Southeast Asia</Region><ServiceBusEndpoint>https://configpoc.servicebus.windows.net/</ServiceBusEndpoint> <SubscriptionId>My-subscription</SubscriptionId><Critical>false</Critical> <EventHubEnabled>true</EventHubEnabled> <NamespaceType>Messaging</NamespaceType></NamespaceDescription>";
var requestBytes = new ASCIIEncoding().GetBytes(requestContent);
request.ContentType = "application/atom+xml";
request.ContentLength = requestBytes.Length;
var requestStream = request.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var stream = new StreamReader(response.GetResponseStream()))
{
//Do something with response
}
catch (WebException ex)
{
var err = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
Console.WriteLine(err);
}
要获取身份验证令牌,我使用的是this方法。我可以确认此方法有效,因为我可以使用其他REST API,例如Get Namespace等。
当我执行代码时,我得到&#34;请求下层服务失败&#34;错误。
谷歌得到的帮助很少。似乎很少有人遇到过这个问题。任何人都可以解释一下导致这个问题的原因以及我如何解决这个问题?
答案 0 :(得分:0)
虽然我永远无法弄清楚这个错误的原因,但我确实找到了另一种使用Azure Service Bus Management APIs创建服务总线的方法。它使用起来更简单,并且按预期工作。
必须注意,此库目前处于“预发布”版本。