0

我正在尝试从 IIS 上运行的 webapi 服务连接到 Azure SQL。如果我使用带有用户 ID 和密码的连接字符串,它可以正常工作。

当我使用通过将 ClientAssertionCertificate 发送到 Azure AD 生成的访问令牌来使用连接字符串生成器时,我收到上面的连接错误。

当我在控制台应用程序中创建相同的代码并在与 IIS 服务器相同的 VM 上运行它时,它工作正常。

我认为这可能与权限有关,因为它适用于控制台应用程序。我尝试更改 DefaultAppPool 使用的身份,但没有奏效。

string accessToken = TokenFactory.GetAccessToken();

var builder = new SqlConnectionStringBuilder();
builder["Data Source"] = $"tcp:{dbServer}.database.windows.net,1433";
builder["Initial Catalog"] = dbName;
builder["Connect Timeout"] = 30;
builder["Persist Security Info"] = false;
builder["TrustServerCertificate"] = false;
builder["Encrypt"] = true;
builder["MultipleActiveResultSets"] = true;

var con = new SqlConnection(builder.ToString());
con.AccessToken = accessToken;

// attempting to use the con from the SqlConnecti
CompanyService _cs = new CompanyService(con);
var company = _cs.GetCompany(1);

return Request.CreateResponse(HttpStatusCode.OK, new { teststring = accessToken } );
4

0 回答 0