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

RestSharp在ASP.NET WebForm返回Null,控制台正常问题解决

RestSharp POST请求在ASP.NET WebForms中返回Null,.NET Core控制台程序却正常运行

我用Visual Studio 2019开发了一个.NET Core控制台程序,通过RestSharp发起POST请求可以正常获取数据并写入SQL Server,但把相同代码移植到ASP.NET WebForms项目(基于.NET Framework)时,却收到了Null响应,完全无法获取数据,恳请大家帮忙排查问题!

控制台程序(正常运行)代码:

using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Data;
using System.Data.SqlClient;

namespace RetailerUrlStatusChecker
{
    public class Program
    {
        static async Task Main(string[] args)
        {
            await ProcessRepositories();
        }
        private static async Task ProcessRepositories()
        {
            var client = new RestClient("https://api-developer.com/products");
            client.Timeout = -1;
            var request = new RestRequest(Method.POST);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Accept", "application/json");
            request.AddParameter("application/json", "{\"category\": \"all\"}", ParameterType.RequestBody);
            var response2 = await client.ExecuteTaskAsync<List>(request);
            List products= response2.Data;
            //INSERT DATA INTO DB SQL SERVER
            string connectionString = "Data Source=utente-pc\\SQLEXPRESS;Initial Catalog=MYDB;Persist Security Info=True;User ID=user;Password=sa";
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                SqlCommand cmd = new SqlCommand("INSERT INTO PRODUCT (code, name, description) VALUES (@code, @name, @description)", connection);
                cmd.Parameters.AddWithValue("@code", products.code);
                cmd.Parameters.AddWithValue("@name", products.name);
                cmd.Parameters.AddWithValue("@description", products.description);
                connection.Open();
                cmd.ExecuteNonQuery();
            }
            catch
            {
                //Label4.Text = "uh oh";
            }
        }
    }
    public class List
    {
        public string code{ get; set; }
        public string name{ get; set; }
        public string description{ get; set; }
    }
}

ASP.NET WebForms(返回Null)代码:

我已经在<%@ Page指令中设置了Async="true",代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RestSharp;
using System.Data;
using System.Data.SqlClient;
using System.Threading.Tasks;

namespace WebApplication2
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RegisterAsyncTask(new PageAsyncTask(GetGizmosSvcAsync));
        }
        public async Task GetGizmosSvcAsync()
        {
            var client = new RestClient("https://api-developer.com/products");
            client.Timeout = -1;
            var request = new RestRequest(Method.POST);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Accept", "application/json");
            request.AddParameter("application/json", "{\"category\": \"all\"}", ParameterType.RequestBody);
            var response2 = await client.ExecuteTaskAsync<List>(request);
            List products= response2.Data;
            //INSERT DATA INTO DB SQL SERVER
            string connectionString = "Data Source=utente-pc\\SQLEXPRESS;Initial Catalog=MYDB;Persist Security Info=True;User ID=user;Password=sa";
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                SqlCommand cmd = new SqlCommand("INSERT INTO PRODUCT (code, name, description) VALUES (@code, @name, @description)", connection);
                cmd.Parameters.AddWithValue("@code", products.code);
                cmd.Parameters.AddWithValue("@name", products.name);
                cmd.Parameters.AddWithValue("@description", products.description);
                connection.Open();
                cmd.ExecuteNonQuery();
            }
            catch
            {
                //Label4.Text = "uh oh";
            }
        }
    }
    public class List
    {
        public string code{ get; set; }
        public string name{ get; set; }
        public string description{ get; set; }
    }
}

API响应Schema:

{
 "code": { "type": "string" },
 "name": { "type": "string" },
 "description": { "type": "string" }
}

更新:问题已解决!

我在论坛上了解到新版RestSharp和.NET Framework存在兼容性问题。仔细对比后发现,我的控制台程序用的是.NET Core,而WebForms项目用的是.NET Framework,两者的NuGet包环境有差异。

于是我重新创建了WebForms项目,安装了RestSharp v106.1.0版本(之前用的是v106.10.1),现在代码可以正常运行了!原来代码本身没有问题,问题出在RestSharp的版本兼容性上。

感谢大家的帮助,给大家添麻烦了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:37:42