«Программа не содержит статический метод« Main », подходящий для точки входа» при добавлении асинхронного - PullRequest
0 голосов
/ 25 апреля 2019

Итак, я возился с ответами и запросами в Интернете на C #, и у меня возникла проблема при попытке запустить программу.Одна из строк кода, которые у меня были:

var response = await httpClient.SendAsync(request);

, требуется асинхронность в методе, превращающем

private static void Main(string[] args)

в

private static async Task Main(string[] args)

Похоже, ошибки нет, но при сборке я получил сообщение об ошибке:

Программа не содержит статический метод 'Main', подходящий для точки входа.

Вот мой код

private static async Task Main(string[] args)
        {

            try
            {
                /*HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://billing.roblox.com/v1/gamecard/redeem");
                            request.Method = "POST";
                            request.ContentType = "application/json";
                            request.Accept = "application/json";
                            JsonExtensionDataAttribute data = new JsonExtensionDataAttribute();
                            data = '3335996838'*/
                using (var httpClient = new HttpClient())
                {
                    using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://billing.roblox.com/v1/gamecard/redeem"))
                    {
                        request.Headers.TryAddWithoutValidation("Accept", "application/json");

                        request.Content = new StringContent("3335996838", Encoding.UTF8, "application/json");

                        var response = await httpClient.SendAsync(request);

                        Console.WriteLine(request.Content);
                        Console.ReadLine();
                    }
                }
            }
            catch (WebException ex)
            {
                string content;
                using (StreamReader reader = new StreamReader(ex.Response.GetResponseStream()))
                {
                    content = reader.ReadToEnd();
                    Console.WriteLine(content);
                    Console.ReadLine();
                }
            }
        }

Кто-нибудь, пожалуйста, помогите мне!

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Я подозреваю, что вы все еще используете Visual Studio 2017, поскольку async Main работает из коробки для новых проектов в Visual Studio 2019 .

Чтобы разрешить async Task Main, вам нужноуказать LatestMinor в качестве языковой версии.(Сборка -> Дополнительно -> Языковая версия).async Main является языковой функцией C # 7.1, а в VS2017 новые проекты по умолчанию используют C # 7.0.

0 голосов
/ 25 апреля 2019

Требуется тип возврата void для основного метода.Вы можете вернуться к void main и изменить эту строку:

  var response = await httpClient.SendAsync(request);

на

var response = httpClient.SendAsync(request).Result;

.Результат получает значение результата задачи.

...