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

调用ASP.NET MVC Web API遇Error 404.15:长字符串POST请求失败

POST请求超长字符串参数返回404.15错误的问题与解决

向Web API发送POST请求时发现,当字符串参数长度达到约20000字符时会返回Error 404.15错误,短字符串则请求可正常执行。查阅相关资料尝试解决未果,附上原API及客户端请求代码求助:

原API代码

[Route("InsertData")]
[AcceptVerbs("GET", "POST", "PUT")]
public IActionResult InsertData(string Char_2000,string Char_1000)
{
    try
    {
        returnAuthNumber = _myRepository.InsertData(Char_2000,
                                                        Char_1000,
                                                        
        if (returnAuthNumber == null) throw new NullReferenceException("Data could not loaded");
    }
    catch (Exception ex)
    {
        _logger.LogError(ex.ToString());
        _logger.LogError(ex.StackTrace);
        return Problem(statusCode: 500,
            detail: ex.Message);
    }
    return Ok(returnAuthNumber);

}

原客户端请求代码(短字符串时可正常运行)

public bool Post<T>(Controller mvcContrllr, string postURLString, string getURLString, string authToken, Dictionary<string, string> param = null)
{
    var token = authToken;
    var url = System.Configuration.ConfigurationManager.AppSettings["ApiUrl"] + this.BuildCompleteUri(postURLString, param);
    var request = new HttpRequestMessage(HttpMethod.Post, this.BuildCompleteUri(url, param));
    var client = new HttpClient();
    // client.BaseAddress = new Uri(GlobalVariables.apiUrl);
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
    HttpResponseMessage response = client.SendAsync(request).Result;
    if (response.IsSuccessStatusCode)
    {
        return true;
    }
    return false;
}

更新
已根据社区建议解决问题,附上修正后的代码供参考:

核心修改:客户端改用复杂类型(Class)传递参数,API端修改为接收带[FromBody]特性的复杂类型参数(默认API从查询字符串接收简单类型,从请求体接收复杂类型)。

修正后的客户端请求代码

public List<T> Post<T>(Controller mvcContrllr, string postURLString, string getURLString, string authToken, MyClass myclass, Dictionary<string, string> param = null)
{
    var token = authToken;
    var url = System.Configuration.ConfigurationManager.AppSettings["ApiUrl"] + postURLString;

    HttpClient client = new HttpClient();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

    var urlParm = url;
    HttpResponseMessage response = client.PostAsJsonAsync(urlParm, myClass).Result;
    response.EnsureSuccessStatusCode();
    if (response.IsSuccessStatusCode)
    {
        var content = response.Content.ReadAsStringAsync();
        content.Wait();
        var items = JsonConvert.DeserializeObject<List<T>>(content.Result);
        return items;
    }

    return null;

}

修正后的API代码

[Route("InsertTAData")]
[AcceptVerbs("GET", "POST", "PUT")]
public IActionResult InsertData([FromBody] Myclass myClass)
                            
{
    try
    {
        returnAuthNumber = _myRepository.InsertData(myClass);               
        if (returnAuthNumber == null) throw new NullReferenceException("Data could not loaded");
    }
    catch (Exception ex)
    {
        _logger.LogError(ex.ToString());
        _logger.LogError(ex.StackTrace);
        return Problem(statusCode: 500,
            detail: ex.Message);
    }
    return Ok(returnAuthNumber);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:48:17