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

C#调用接口JSON反序列化失败 提示未知web方法addEditTickets

问题定位结论
  • 报错Unexpected character encountered while parsing value: <. Path '', line 0, position 0.和你提交的JSON请求参数格式没有任何关系,触发原因是服务端没有返回预期的JSON格式响应,而是返回了HTML格式的服务端错误页,HTML内容以<字符开头,不符合JSON语法规则,因此执行JsonConvert.DeserializeObject(res)时抛出解析错误。
  • 你捕获到的响应内容已经明确了服务端的真实错误:System.ArgumentException: Unknown web method addEditTickets. Parameter name: methodName,即当前请求的目标web方法addEditTickets不存在,服务端直接抛出了框架错误黄页。
  • 你提供的请求JSON参数格式校验完全正确,不需要在参数格式上花费排查精力。
修复方案
  • 核对请求地址拼接逻辑:检查配置项links的基础地址、变量functionName的取值,确认拼接后的完整请求路径和服务端实际暴露的接口路径完全匹配,重点排查路径是否缺省后缀、大小写是否错误、路由规则是否匹配。
  • 如果调用的是ASP.NET ASMX类型的web服务,需要确认服务端的addEditTickets方法满足以下要求:
    • 方法添加了[WebMethod]特性标记
    • 方法访问修饰符为public
    • 方法未做特殊访问限制
  • 增加响应合法性校验逻辑,不要直接将响应内容反序列化为JSON,避免非JSON返回值触发解析报错,参考修正代码:
DataTable retOg = new DataTable();
var client = new RestClient(System.Configuration.ConfigurationManager.AppSettings["links"].ToString() + functionName);
client.Timeout = -1;

var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", param, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
string res = response.Content;

// 先校验响应格式再做JSON解析
if (response.IsSuccessful && !string.IsNullOrEmpty(res) && res.TrimStart().StartsWith("{"))
{
    dynamic jsonResponse = JsonConvert.DeserializeObject(res);
}
else
{
    // 此处可打日志记录原始响应内容,方便定位服务端错误
    throw new Exception($"接口请求失败,服务端返回:{res}");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:09:18