azure-sdk-for-net icon indicating copy to clipboard operation
azure-sdk-for-net copied to clipboard

[BUG] When calling GetRoleAssignments for a resource that contains `#` in the ResourceName, a BadRequest occurs.

Open HiroyukiSakoh opened this issue 5 months ago • 1 comments

Library name and version

Azure.ResourceManager.Authorization 1.1.3.0

Describe the bug

When calling GetRoleAssignments for a resource that contains # in the ResourceName, a BadRequest occurs.

In the case of an App Service certificate (resource type Microsoft.Web/certificates), it seems that resources with names like {Thumbprint}#{ResourceGroupName}-{Region}webspace may be generated.

Expected behavior

200 OK

Actual behavior

Azure.RequestFailedException:
   at Azure.Core.PageableHelpers+PageableImplementation`1.GetResponse (Azure.ResourceManager.Authorization, Version=1.1.3.0, Culture=neutral, PublicKeyToken=92742159e12e44c8)
   at Azure.Core.PageableHelpers+PageableImplementation`1+<GetNextResponseAsync>d__20.MoveNext (Azure.ResourceManager.Authorization, Version=1.1.3.0, Culture=neutral, PublicKeyToken=92742159e12e44c8)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Azure.Core.PageableHelpers+PageableImplementation`1+<GetAsyncEnumerator>d__15.MoveNext (Azure.ResourceManager.Authorization, Version=1.1.3.0, Culture=neutral, PublicKeyToken=92742159e12e44c8)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.ThrowForFailedGetResult (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Azure.Core.PageableHelpers+PageableImplementation`1+<GetAsyncEnumerator>d__15.System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult (Azure.ResourceManager.Authorization, Version=1.1.3.0, Culture=neutral, PublicKeyToken=92742159e12e44c8)
The api-version query parameter (?api-version=) is required for all requests.
Status: 400 (Bad Request)
ErrorCode: MissingApiVersionParameter

Content:
{"error":{"code":"MissingApiVersionParameter","message":"The api-version query parameter (?api-version=) is required for all requests."}}

Headers:
Cache-Control: no-cache
Pragma: no-cache
x-ms-failure-cause: REDACTED
x-ms-request-id: 44586804-c3b3-43ba-9d73-7f7d568f864a
x-ms-correlation-request-id: REDACTED
x-ms-routing-request-id: REDACTED
Strict-Transport-Security: REDACTED
X-Content-Type-Options: REDACTED
X-Cache: REDACTED
X-MSEdge-Ref: REDACTED
Date: Wed, 25 Sep 2024 05:01:19 GMT
Content-Length: 137
Content-Type: application/json; charset=utf-8
Expires: -1

Reproduction Steps

Call GetRoleAssignments on resources whose ResourceName contains #.

var subscription = armClient.GetSubscriptionResource(SubscriptionResource.CreateResourceIdentifier(subscriptionId));
subscription = (await subscription.GetAsync()).Value;
var resourceGroups = subscription.GetResourceGroups();
foreach (var resourceGroup in resourceGroups)
{
    await foreach (var resoures in resourceGroup.GetGenericResourcesAsync())
    {
        await foreach (var roleAssingment in resoures.GetRoleAssignments())
        {
        }
    }
}

Environment

Azure AppService Function Apps .NET 8 Isolated

HiroyukiSakoh avatar Sep 25 '24 08:09 HiroyukiSakoh