【问题标题】:system.net.http.httprequestexception: an error occurred while sending the request. Visual studiosystem.net.http.httprequestexception:发送请求时出错。视觉工作室
【发布时间】:2020-12-08 14:22:17
【问题描述】:

我正在使用 Visual Studio 2017 和 MySQL。我最近遇到了我的电脑硬盘问题,所以不得不更换它。我重新下载了 Visual Studio 和 MySQL。我的代码在笔式驱动器上,所以我将代码重新导入 Visual Studio 并为 MySQL 重新创建表。我成功地将我的视觉工作室连接到 MySQL。这是我的代码。

欢迎页面

 public async Task<List<string>> UserNumber()
    {
        MainUserDataRestClient<string> restClient = new MainUserDataRestClient<string>();
        var GetNumber = await restClient.GetAsync();
        return GetNumber;
    }



    protected override async void OnAppearing()
    {
        base.OnAppearing();
        List<string> Number = new List<string>();
        Number = await UserNumber();
        await MainProgressBar.ProgressTo(0.8, 1000, Easing.Linear);

        App.Current.MainPage = new NavigationPage(new HomePage())
        {
            BarBackgroundColor = Color.FromHex("#35ddcf")
        };
        int i = Number.Count;
        if (i == 0)
        {
            await  MainProgressBar.ProgressTo(0.8, 1000, Easing.Linear);
            App.Current.MainPage = new MainPage();
        }
        else
        {
            await MainProgressBar.ProgressTo(0.8, 1000, Easing.Linear);
            App.Current.MainPage = new NavigationPage(new HomePage())
            { BarBackgroundColor = Color.FromHex("#35ddcf") };
        }
    }
}

不拘小节

  public class MainUserDataRestClient<T>
{
    private const string WebServiceUrl = "http://localhost:57645/api/MainUserData/";


    public async Task<List<T>> GetAsync()
    {

        var httpClient = new HttpClient();

        var json = await httpClient.GetStringAsync(WebServiceUrl);

        var taskModels = JsonConvert.DeserializeObject<List<T>>(json);

        return taskModels;
    } }

控制器

 public class MainUserDataController : Controller
{
    // GET: api/MainUserData
    [HttpGet]
    public List<string> Get()
    {
        string sqlstring = "server=localhost; port=3306 ; user id =root;Password=;Database=test;";
        MySqlConnection conn = new MySqlConnection(sqlstring);
        MainPhoneNumber MNP = new MainPhoneNumber();

        MySqlParameter param = new MySqlParameter();
        param.ParameterName = "@id";
        param.Value = MNP.PhoneNumber;


        try
        {
            conn.Open();
        }
        catch (MySqlException ex)
        {
            throw ex;
        }
        string Query = "SELECT * FROM test.maintable where Telephone = @id ";
        MySqlCommand cmd = new MySqlCommand(Query, conn);
        cmd.Parameters.Add(param);
        MySqlDataReader MSQLRD = cmd.ExecuteReader();
        List<string> GetBizList = new List<string>();

        if (MSQLRD.HasRows)
        {

            while (MSQLRD.Read())
            {
                string BV;
                BV = (MSQLRD["Telephone"].ToString());
                GetBizList.Add(BV);
            }
        }

        conn.Close();
        return GetBizList;
    } }

当我运行代码时,我无法从 MySQL 数据库中检索数据,我得到了这个异常。

未处理的异常:system.net.http.httprequestexception:发送请求时出错

我错过了什么?

【问题讨论】:

    标签: c# mysql visual-studio xamarin mysql-error-1064


    【解决方案1】:

    这看起来不像是数据库错误。似乎错误来自这一行:

    var json = await httpClient.GetStringAsync(WebServiceUrl);
    

    我没有太多关于你的运行环境的信息,但是从你使用 iis-Express 的 url 看来。首先要查看的是 url:

    private const string WebServiceUrl = "http://localhost:57645/api/MainUserData/";
    

    您的新设置中的端口是否正确,或者它是否已更改并且您尝试访问不存在的 url?

    要看的第二件事是,您是否可以在控制器中打断点。如果是,您是否有任何错误/异常?

    如果上述建议不起作用,请添加更多信息,以便我们更好地帮助您。

    【讨论】:

    • 如何知道Url是否改变了?
    • 正如你所说,我正在使用 iis-Express。
    • 当你启动你的 api 时,一个带有 iis express 的托盘图标将启动,并且在当前端口悬停时可以看到一个 url。
    • 网址是一样的。
    • 拜托,您还有其他建议吗?我需要帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多