我在中国的azure中创建了一个activedirectory的应用程序(程序A),这个程序的功能是获取登录用户的accesstoken,然后token使用graphapi的方式创建用户(我参照了示例代码AzureADSamples/WebApp-GraphAPI-DotNet)。
这个程序我是发布在tanant A上的。
我使用tanant A的管理员用户登录,使用示例代码中的代码【authenticationContext.AcquireTokenByAuthorizationCode】获取用户的accesstoken,能够获取;然后使用这个token获取SubscribedSkus【client.SubscribedSkus.ExecuteAsync().Result】也是正常的,后面添加用户【client.Users.AddUserAsync(user).Wait()】的操作也正确。
但是我使用tenant B的管理员登录,同样使用示例代码中的代码【authenticationContext.AcquireTokenByAuthorizationCode】获取用户的accesstoken,能够获取;然后使用这个token获取SubscribedSkus【client.SubscribedSkus.ExecuteAsync().Result】就错误了,错误提示“Invalid domain name in the request url”【详细错误信息在末尾】。
代码中的【LoginEntry】我使用了【login.chinacloudapi.cn/common】,【ResouceUrl】我使用了【https://graph.chinacloudapi.cn】。
我已经在azure中的tenant A的那个应用程序开启了【多租户】模式,也赋予其相应的权限。
请问各位大神遇到过这个问题吗?
System.AggregateException: One or more errors occurred. ---> Microsoft.Data.OData.ODataErrorException: Invalid domain name in the request url. ---> System.Data.Services.Client.DataServiceQueryException: An error occurred while processing this request. ---> System.Data.Services.Client.DataServiceClientException: {"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"Invalid domain name in the request url."}}} at System.Data.Services.Client.BaseAsyncResult.EndExecute[T](Object source, String method, IAsyncResult asyncResult) at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult) --- End of inner exception stack trace --- at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult) at System.Data.Services.Client.DataServiceRequest.EndExecute[TElement](Object source, DataServiceContext context, String method, IAsyncResult asyncResult) at System.Data.Services.Client.DataServiceQuery`1.EndExecute(IAsyncResult asyncResult) at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<>c__DisplayClass4c`2.<ExecuteAsync>b__4a(IAsyncResult r) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<ExecuteAsync>d__4e`2.MoveNext() --- End of inner exception stack trace --- at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<ExecuteAsync>d__4e`2.MoveNext()--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.ActiveDirectory.GraphClient.SubscribedSkuCollection.<<ExecuteAsync>b__2>d__3.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task`1.get_Result() at ProvisioningToolUserOper.CreateUser.btnGetSkuList_Click(Object sender, EventArgs e)---> (Inner Exception #0) Microsoft.Data.OData.ODataErrorException: Invalid domain name in the request url. ---> System.Data.Services.Client.DataServiceQueryException: An error occurred while processing this request. ---> System.Data.Services.Client.DataServiceClientException: {"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"Invalid domain name in the request url."}}} at System.Data.Services.Client.BaseAsyncResult.EndExecute[T](Object source, String method, IAsyncResult asyncResult) at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult) --- End of inner exception stack trace --- at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult) at System.Data.Services.Client.DataServiceRequest.EndExecute[TElement](Object source, DataServiceContext context, String method, IAsyncResult asyncResult) at System.Data.Services.Client.DataServiceQuery`1.EndExecute(IAsyncResult asyncResult) at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<>c__DisplayClass4c`2.<ExecuteAsync>b__4a(IAsyncResult r) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<ExecuteAsync>d__4e`2.MoveNext() --- End of inner exception stack trace --- at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<ExecuteAsync>d__4e`2.MoveNext()--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.ActiveDirectory.GraphClient.SubscribedSkuCollection.<<ExecuteAsync>b__2>d__3.MoveNext()<---