mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 10:58:30 -05:00
Catch Request/Event handler errors at dispatcher level (#1610)
* Catch Request/Event handler errors at dispatcher level * Fix tests * Use Exception overload of SendError * Fix tests
This commit is contained in:
@@ -42,39 +42,32 @@ namespace Microsoft.SqlTools.ServiceLayer.AzureBlob
|
||||
CreateSasParams optionsParams,
|
||||
RequestContext<CreateSasResponse> requestContext)
|
||||
{
|
||||
try
|
||||
{
|
||||
ConnectionInfo connInfo;
|
||||
ConnectionService.Instance.TryFindConnection(
|
||||
optionsParams.OwnerUri,
|
||||
out connInfo);
|
||||
var response = new CreateSasResponse();
|
||||
ConnectionInfo connInfo;
|
||||
ConnectionService.Instance.TryFindConnection(
|
||||
optionsParams.OwnerUri,
|
||||
out connInfo);
|
||||
var response = new CreateSasResponse();
|
||||
|
||||
if (connInfo == null)
|
||||
{
|
||||
await requestContext.SendError(SR.ConnectionServiceListDbErrorNotConnected(optionsParams.OwnerUri));
|
||||
return;
|
||||
}
|
||||
if (connInfo.IsCloud)
|
||||
{
|
||||
await requestContext.SendError(SR.NotSupportedCloudCreateSas);
|
||||
return;
|
||||
}
|
||||
using (SqlConnection sqlConn = ConnectionService.OpenSqlConnection(connInfo, "AzureBlob"))
|
||||
{
|
||||
// Connection gets disconnected when backup is done
|
||||
ServerConnection serverConnection = new ServerConnection(sqlConn);
|
||||
Server sqlServer = new Server(serverConnection);
|
||||
|
||||
SharedAccessSignatureCreator sharedAccessSignatureCreator = new SharedAccessSignatureCreator(sqlServer);
|
||||
string sharedAccessSignature = sharedAccessSignatureCreator.CreateSqlSASCredential(optionsParams.StorageAccountName, optionsParams.BlobContainerKey, optionsParams.BlobContainerUri, optionsParams.ExpirationDate);
|
||||
response.SharedAccessSignature = sharedAccessSignature;
|
||||
await requestContext.SendResult(response);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
if (connInfo == null)
|
||||
{
|
||||
await requestContext.SendError(ex);
|
||||
await requestContext.SendError(SR.ConnectionServiceListDbErrorNotConnected(optionsParams.OwnerUri));
|
||||
return;
|
||||
}
|
||||
if (connInfo.IsCloud)
|
||||
{
|
||||
await requestContext.SendError(SR.NotSupportedCloudCreateSas);
|
||||
return;
|
||||
}
|
||||
using (SqlConnection sqlConn = ConnectionService.OpenSqlConnection(connInfo, "AzureBlob"))
|
||||
{
|
||||
// Connection gets disconnected when backup is done
|
||||
ServerConnection serverConnection = new ServerConnection(sqlConn);
|
||||
Server sqlServer = new Server(serverConnection);
|
||||
|
||||
SharedAccessSignatureCreator sharedAccessSignatureCreator = new SharedAccessSignatureCreator(sqlServer);
|
||||
string sharedAccessSignature = sharedAccessSignatureCreator.CreateSqlSASCredential(optionsParams.StorageAccountName, optionsParams.BlobContainerKey, optionsParams.BlobContainerUri, optionsParams.ExpirationDate);
|
||||
response.SharedAccessSignature = sharedAccessSignature;
|
||||
await requestContext.SendResult(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user