You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6集成Auth0添加用户时遇URI解析错误求助

解决.NET 6中Auth0创建用户时的"Invalid URI: The hostname could not be parsed"错误

你遇到的错误根源是创建ManagementApiClient时传入了错误的参数——你传了完整的Users API端点URL,但这个类的构造函数只需要Auth0的基础域名(不带/api/v2/users后缀)。

修正步骤

  1. 替换ManagementApiClient的初始化代码
    把错误的初始化代码:
string auth0ManagementApiUrl2 = "https://speedview.eu.auth0.com/api/v2/users";
var managementApiClient = new ManagementApiClient(auth0ManagementApiUrl2, auth0ManagementApiToken);

替换为以下任意一种写法:

// 直接传入Auth0基础域名
var managementApiClient = new ManagementApiClient("https://speedview.eu.auth0.com", auth0ManagementApiToken);

或更严谨的Uri对象写法:

var auth0DomainUri = new Uri("https://speedview.eu.auth0.com");
var managementApiClient = new ManagementApiClient(auth0DomainUri, auth0ManagementApiToken);
  1. 清理冗余代码
    你当前代码中创建的AuthenticationApiClient实例是多余的(因为使用Management API不需要它),可以直接删除整个using (var auth0Client = ...)块。

修正后的完整方法代码

[HttpPost("post-consultant")]
public async Task<ActionResult<ConsultantUserPostDTO>> RegisterNewConsultant([FromBody] ConsultantUserPostDTO consultantUserDTO)
{
    try
    {
        var newUser = await _userService.CreateNewUserConsultant(
            consultantUserDTO.UserPostDTO.Username,
            consultantUserDTO.UserPostDTO.Email,
            consultantUserDTO.UserPostDTO.Password
        );

        var newConsultant = await _consultantService.CreateNewConsultant(
            newUser.Id.ToString(),
            consultantUserDTO.ConsultantPostDTO.Name,
            consultantUserDTO.ConsultantPostDTO.Bio,
            consultantUserDTO.ConsultantPostDTO.TechtypeIdConsultant,
            consultantUserDTO.ConsultantPostDTO.RegionIdConsultant
        );

        string auth0Domain = "https://speedview.eu.auth0.com";
        string auth0ManagementApiToken = await _auth0Service.GetManagementApiTokenAsync();

        // 初始化ManagementApiClient
        var managementApiClient = new ManagementApiClient(auth0Domain, auth0ManagementApiToken);

        // 构造Auth0用户创建请求
        var userCreateRequest = new UserCreateRequest
        {
            Connection = "Username-Password-Authentication",
            UserName = consultantUserDTO.UserPostDTO.Username,
            Email = consultantUserDTO.UserPostDTO.Email,
            Password = consultantUserDTO.UserPostDTO.Password,
        };

        // 创建Auth0用户
        var createdUser = await managementApiClient.Users.CreateAsync(userCreateRequest);

        return Ok(createdUser);
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error: {ex.Message}");
        return StatusCode(500, "An error occurred while processing your request.");
    }
}

额外验证要点

  • 确保auth0ManagementApiToken包含create:users权限:在Auth0控制台的API设置中,给获取Management API Token的应用分配该权限,否则会返回403错误。
  • 确认Connection参数值("Username-Password-Authentication")与你Auth0租户中实际启用的数据库连接名称完全一致(区分大小写)。
  • 检查密码是否符合Auth0租户设置的密码复杂度规则,否则用户创建会失败。
  • 确保邮箱和用户名在Auth0租户中未重复,否则会返回用户已存在的错误。

内容的提问来源于stack exchange,提问作者chrida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:33:15