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

ASP.NET Core Web API部署IIS后请求URI无效问题解决求助

问题解决:ASP.NET Core 6 Web API部署IIS后HttpClient URI无效错误

错误原因分析

错误提示An invalid request URI was provided. Either the request URI must be an absolute URI or BaseAddress must be set.,核心问题是调用GetAsync时传入的custAccountNoUrl不是合法的绝对URI,或者HttpClient实例未正确配置BaseAddress。本地运行正常但IIS部署后出错,大概率是配置读取不完整或URI拼接逻辑在IIS环境下出现异常。

具体修复方案

方案1:确保拼接出完整的绝对URI

检查custAccountNoUrl的拼接逻辑,确保最终生成完整的绝对地址:

  1. 先验证配置项custAccountDetailUrl是否被正确读取。可在代码中添加日志输出,确认该值在IIS环境下是否为https://thirdpartyservice.com/api/Account/GetCustomerDetail/。
  2. 拼接accountNumber时,避免路径拼接错误(多斜杠/缺失斜杠),推荐用Uri类安全拼接:
// 正确拼接绝对URI
var baseUrl = _configuration["MyEndpoints:custAccountDetailUrl"];
var absoluteUri = new Uri(new Uri(baseUrl), accountNumber);
var response = await _myClient.GetAsync(absoluteUri);

方案2:为HttpClient配置BaseAddress并使用相对路径

在Program.cs中注册HttpClient时直接设置BaseAddress,后续调用使用相对路径:

  1. 修改Program.cs的HttpClient注册代码:
builder.Services.AddHttpClient("MyThirdPartyClient", client =>
{
    var baseUrl = builder.Configuration["MyEndpoints:custAccountDetailUrl"];
    client.BaseAddress = new Uri(baseUrl);
});
  1. 在DataUtil中注入IHttpClientFactory,创建指定HttpClient并调用:
private readonly IHttpClientFactory _httpClientFactory;

public DataUtil(IHttpClientFactory httpClientFactory, IConfiguration configuration)
{
    _httpClientFactory = httpClientFactory;
    // 其他初始化逻辑
}

// 验证账户的方法
public async Task<bool> ValidateAccount(string accountNumber)
{
    var client = _httpClientFactory.CreateClient("MyThirdPartyClient");
    // 使用相对路径发起请求
    var response = await client.GetAsync(accountNumber);
    // 后续响应处理逻辑
}

额外优化建议

  • 避免用.Result同步等待异步方法,改用await,防止IIS环境下出现死锁。
  • 添加配置项空值/有效性检查:
var baseUrl = _configuration["MyEndpoints:custAccountDetailUrl"];
if (string.IsNullOrEmpty(baseUrl) || !Uri.IsWellFormedUriString(baseUrl, UriKind.Absolute))
{
    throw new InvalidOperationException("第三方服务地址配置无效");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:31:10