1

我正在使用 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:发送请求时出错

我错过了什么?

4

1 回答 1

0

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

var json = await httpClient.GetStringAsync(WebServiceUrl);

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

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

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

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

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

于 2020-08-19T10:55:43.167 回答