0

我有一个通过混合连接运行到本地服务器的 Azure 函数。一切都很好。将来我们将在多个位置拥有多个混合连接,并且它们可能具有相同的服务器名称和端口组合。

在执行 SQL 操作之前,有没有办法验证(或调试)正在使用的混合连接的服务总线命名空间或 UserMetadata 属性?

这是来自函数应用的 run.csx:

#r "System.Data"


using System.Net;
using System.Collections.Generic;
using System.Configuration;
using Newtonsoft.Json;
using System.Data.SqlClient;
using System.Text;


public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");
    string connectionString = "Server=MyServerName;Initial Catalog=BillingDB;";
    string queryString = "select top 2 * from Billing";

    List<Billing> bills = new List<Billing>();
    SqlConnection conn = new SqlConnection(connectionString);

    conn.Open();

    /***************
    Here is where I would like to be able to verify/validate 
    the namespace or UserMetadata of the hybrid connection so that I'm sure
    we're connecting to the desired database. "Server" in the connection string
    is not enough in our case.
    ******************/


    SqlCommand DBCmd = new SqlCommand(queryString, conn);
    SqlDataReader myDataReader;
    myDataReader = DBCmd.ExecuteReader();

    while (myDataReader.Read())
        {
            bills.Add(new Billing
            {
                Student_ID = Convert.ToInt32(myDataReader[0]),
                Transaction_Number = Convert.ToInt32(myDataReader[1]),
                Log = myDataReader[2].ToString(),
                Amount_Owed = Convert.ToDecimal(myDataReader[3])
            }
            );
        }

    myDataReader.Close();
    conn.Close();

    var json = JsonConvert.SerializeObject(bills);
    log.Info("json: " + json);

    return req.CreateResponse(HttpStatusCode.OK,json);

}




public class Billing {
    public int Student_ID { get; set; }
    public int Transaction_Number { get; set; }
    public string Log { get; set; }
    public decimal Amount_Owed { get; set; }
}
4

1 回答 1

0

我最终能够通过向 Azure 资源管理器 REST API 发出 GET 请求来解决这个问题(通过单击应用程序设置中的资源管理器,它提供了调用所需的 url 以及预期的响应正文)。除此之外,还需要创建一个 Active Directory 应用程序来获取访问资源的令牌。

https://management.azure.com/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/Microsoft.Web/sites/{functionname}/hybridConnectionRelays?api-version=2016-08-01

这将返回一个 JSON 对象,其中列出了“连接”到单个应用程序/功能应用程序的混合连接的属性。

于 2017-11-06T00:27:04.683 回答