Asp.net core Steeltoe服务注册表发现并将主机名作为前缀添加到解析的url

Asp.net core Steeltoe服务注册表发现并将主机名作为前缀添加到解析的url,asp.net-core,microservices,cloud-foundry,service-discovery,Asp.net Core,Microservices,Cloud Foundry,Service Discovery,我正在使用PCF Service Registry注册我的微服务,并使用discovery client解析服务间调用的实际服务URL,如下所示 [Route("api/[controller]")] public class CustomerController: Controller { private DiscoveryHttpClientHandler discHttpHandler; private ILogger<ValuesC

我正在使用PCF Service Registry注册我的微服务,并使用discovery client解析服务间调用的实际服务URL,如下所示

[Route("api/[controller]")]
    public class CustomerController: Controller
    {
        private DiscoveryHttpClientHandler discHttpHandler;

        private ILogger<ValuesController> logger;

        private const string RANDOM_CUSTOMER_URL = "https://CustomerService/api/v1/customer/";

        //private const string RANDOM_CUSTOMER_URL = "http://localhost:58227/api/v1/customer/";

        public CustomerController(IDiscoveryClient client, ILogger<ValuesController> logger)
        {
            this.logger = logger;
            this.discHttpHandler = new DiscoveryHttpClientHandler(client);
        }

        /// <summary>
        /// Retrieves the customer name by invoking Customer Service via 
        /// Service registry lookup
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [Route("GetCustomerName/{id}")]
        [HttpGet]
        public async Task<IActionResult> GetCustomerName(int id)
        {
            try
            {
                var client = GetClient();
                var resString = await client.GetAsync(RANDOM_CUSTOMER_URL + id).
                    Result.Content.ReadAsStringAsync();
                var respObj = JsonConvert.DeserializeObject<ApiResponse<CustomerDTO>>(resString);
                if (respObj != null)
                {
                    return Ok(new { CustomerName = respObj.Result.FirstName + ", " + respObj.Result.LastName });
                }
                return NotFound();
            }
            catch (Exception ex)
            {
                logger.LogError(default(EventId), ex, ex.ToString());
                return StatusCode(500);
            }
        }

        /// <summary>
        /// Create an Http client backed by Steeltoe's DiscoveryHttpClientHandler
        /// </summary>
        /// <returns></returns>
        private HttpClient GetClient()
        {
            var client = new HttpClient(discHttpHandler, false);
            return client;
        }
    }
[路由(“api/[控制器]”)]
公共类CustomerController:控制器
{
私有发现HttpClientHandler discHttpHandler;
私人ILogger记录器;
私有常量字符串RANDOM\u CUSTOMER\u URL=”https://CustomerService/api/v1/customer/";
//私有常量字符串RANDOM\u CUSTOMER\u URL=”http://localhost:58227/api/v1/customer/";
公共CustomerController(IDiscoveryClient客户端、ILogger记录器)
{
this.logger=记录器;
this.discHttpHandler=新发现的HttpClientHandler(客户端);
}
/// 
///通过调用客户服务来检索客户名称
///服务注册表查找
/// 
/// 
/// 
[路由(“GetCustomerName/{id}”)]
[HttpGet]
公共异步任务GetCustomerName(int id)
{
尝试
{
var client=GetClient();
var resString=await client.GetAsync(随机客户URL+id)。
Result.Content.ReadAsStringAsync();

var respObj=JsonConvert.DeserializeObject。我不知道如何在Eureka配置中实现这一点。我尝试将主机名放入Eureka:instance配置中,如中所述,但最终与以前解析的url相同。对此有何想法?请提前感谢。

以便使用非自动配置注册您的服务要使用主机名,请将主机名放入
eureka:instance:hostname
并将
eureka:instance:registrationMethod
设置为
hostname

要使用非自动配置的主机名注册服务,请将主机名放入
eureka:instance:hostname
并设置
eureka:instance:registrationMet>hod
主机名

“eureka”:{“客户端”:{“shouldRegisterWithEureka”:true,“shouldFetchRegistry”:false},“实例”:{“statusPageUrlPath”:/api docs/swagger”,“healthCheckUrlPath”:“/HealthCheck”,“主机名”:“customerservice1 mycomp.net”,“registrationMethod”:“主机名”}}我已经像上面那样注册了我的目标服务。在我的源服务中,我正在使用Url来解析。但是看起来在给出了错误的主机名之后,它也在工作(意味着其他一些注册方法正在运行)。“eureka”:{“client”:{“shouldRegisterWithEureka”:true,“shouldFetchRegistry”:false},“实例:{“statusPageUrlPath”:“/api文档/swagger”,“healthCheckUrlPath”:“/HealthCheck”,“主机名”:“customerservice1 mycomp.net”,“registrationMethod”:“主机名”}”我已经像上面那样注册了我的目标服务。在我的源服务中,我正在使用Url来解析。但看起来在给出错误的主机名之后,它也在工作(意味着其他一些注册方法正在运行)。