Я хочу опубликовать результаты computer vision api на веб-странице

#c# #asp.net

#c# #asp.net

Вопрос:

Я хочу, чтобы после загрузки страницы выполнялся следующий код, однако я продолжаю получать сообщение об ошибке «модификатор ‘public’ недопустим для этого элемента» для общедоступной асинхронной задачи MakeOCRRequest(). Как я могу решить эту проблему? Я использую computer vision API для захвата текста из изображения.

   public void page_Load(object sender, EventArgs e)

    {
        // Replace <Subscription Key> with your valid subscription key.
        const string subscriptionKey = "(*****)";

        // You must use the same region in your REST call as you used to
        // get your subscription keys. The paid subscription keys you will get
        // it from microsoft azure portal.
        // Free trial subscription keys are generated in the westcentralus region.
        // If you use a free trial subscription key, you shouldn't need to change
        // this region.
        const string endPoint =
            "https://westus.api.cognitive.microsoft.com/vision/v1.0/ocr";

        /// 
        /// Gets the text visible in the specified image file by using
        /// the Computer Vision REST API.
        /// </summary>

       public async Task<string> MakeOCRRequest()
        {
            string imageFilePath = @"C:Usersrajeesh.raveendranDesktopbill.jpg";
            var errors = new List<string>();
            string extractedResult = "";
            ImageInfoViewModel responeData = new ImageInfoViewModel();
 

Комментарии:

1. Опубликованный код не имеет смысла как есть. Он показывает метод, page_Load который определяет две константы. Затем он пытается определить другой метод внутри текущего метода, который не работает на C #. Вы можете определить функцию внутри метода, но не метод. Кроме того, неясно, какую технологию вы используете. Может быть, веб-формы?

2. @HereticMonkey Да, я использую веб-файлы. Я новичок в программировании, я хочу, чтобы метод запускался после загрузки страницы. Спасибо

Ответ №1:

Вы не можете вложить этот код. Я бы для тестирования просто поместил стандартную кнопку в форму. дважды щелкните по кнопке и напишите код в этой результирующей заглушке кода.

Сначала заставьте это работать. Вы действительно не хотите, чтобы этот код выполнялся при загрузке страницы, поскольку любое обновление или, скажем, нажатие нескольких тестовых кнопок на этой странице приведет к срабатыванию события загрузки страницы.

Итак, на данный момент — быть новичком в этом? удалите весь этот код при загрузке страницы. Нажмите кнопку на веб-форме. Дважды щелкните по кнопке, а затем поместите свой код внутри этой кнопки.

Кроме того, не используйте / не создавайте заглушку кода и не вызывайте как асинхронный — поскольку это будет означать, что вся страница и значения ее кода будут выходить за рамки довольно быстро.

В конечном итоге можно ввести вызов sub / task как асинхронный — но для начала. Есть загрузка страницы — нажмите эту простую кнопку. Нажмите на кнопку и запустите заглушку кода (называемую code behind). И, как уже отмечалось, для начала не вызывайте дополнительные подразделы как asyc, поскольку веб-страница работает следующим образом:

 You click on a button.
The WHOLE web page travels up to server.
the page class object is created.
the page is pre-procssed.
your code behind NOW runs
when you code behind is done then page render is done
after page created, it travels back down to the client side
your page class then goes out of scope.
 

Итак, последний класс страницы событий выходит за рамки, поэтому вы не хотите вызывать этот внешний подраздел как асинхронный, поскольку, если вы это сделаете, веб-страница вернется обратно к клиенту, а затем класс кода страницы выйдет из области видимости, но ваш «асинхронный» код теперьвыполняется. (и у вас нет средств для обновления страницы веб-формы.

Итак, разбейте это тестирование обучение на этапы. Нажмите кнопку на указателе формы. Затем дважды щелкните по этой кнопке, а затем в IDE введите свой код и вспомогательные вызовы.

Комментарии:

1. Итак, вы предлагаете поместить приведенный выше код в защищенный метод void button1_Click(отправитель объекта, EventArgs e)?

2. ДА. Используйте конструктор форм. Перетащите кнопку. Дважды щелкните по этой кнопке (при этом вы перейдете к редактированию кода). Теперь поместите / поместите / запустите код в эту заглушку кнопки. и для тестирования — удалите асинхронные вещи — детские шаги здесь.

3. На самом деле, почему бы не поместить текстовое поле в эту форму — размер его для большого абзаца. В таблице свойств для этого текстового поля измените его на многострочный. Затем в последней строке вашего кода введите TextBox1.Text = «мои результаты кода» (чтобы вы могли отображать результаты в текстовом поле)