Код C# отлично работает как консольное приложение, но не работает как надстройка Word.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Код C# отлично работает как консольное приложение, но не работает как надстройка Word.

Сообщение Anonymous »

Я немного разбираюсь в C#. Я пытаюсь написать надстройку Office, которая позволяет пользователю выбирать текст в текстовом документе, а затем вызывать API языковой службы Azure. Вызов работает нормально, когда я создал автономное консольное приложение Windows:

Код: Выделить всё

 Debug.WriteLine("beginning of the try");
string azureEndpoint = "https://redacted.cognitiveservices.azure.com/"; // Replace with your actual endpoint URL
string subscriptionKey = "redacted"; // Replace with your actual subscription key

Uri endpoint = new Uri(azureEndpoint);
AzureKeyCredential credential = new AzureKeyCredential(subscriptionKey);

QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);

string projectName = "redacted";
string deploymentName = "production";
QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);
Response response = client.GetAnswers("Where is your headquarters?", project);

foreach (KnowledgeBaseAnswer answer in response.Value.Answers)
{
Debug.WriteLine($"({answer.Confidence:P2}) {answer.Answer}");
Debug.WriteLine($"Source: {answer.Source}");
Debug.WriteLine($"Confidence:  {answer.Confidence}");
}
Однако, когда я пытаюсь привязать тот же код к кнопке в надстройке Office, я получаю ошибки (10054, «Существующее соединение было принудительно закрыто удаленным узлом»). Обратите внимание, что я пытался использовать асинхронный режим — похоже, это не дало никаких результатов.

Код: Выделить всё

private void button7_Click(object sender, RibbonControlEventArgs e)
{
var rng = Globals.ThisAddIn.Application.Selection.Range;
rng.Select();
var selectedText = rng.Text;

try
{
Debug.WriteLine("beginning of the try");
string azureEndpoint = "https://redacted.cognitiveservices.azure.com/"; // Replace with your actual endpoint URL
string subscriptionKey = "redacted"; // Replace with your actual subscription key

Uri endpoint = new Uri(azureEndpoint);
AzureKeyCredential credential = new AzureKeyCredential(subscriptionKey);

QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);

string projectName = "redacted";
string deploymentName = "production";
QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);
Response response = client.GetAnswers("Where is your headquarters?", project);

foreach (KnowledgeBaseAnswer answer in response.Value.Answers)
{
Debug.WriteLine($"({answer.Confidence:P2}) {answer.Answer}");
Debug.WriteLine($"Source: {answer.Source}");
Debug.WriteLine($"Confidence:  {answer.Confidence}");
}
}
catch (Exception ex)
{
// Handle any exceptions (e.g., network errors, invalid response)
MessageBox.Show("Error calling Azure Language Service API: " + ex.Message );
}
}
Ошибка: повторная попытка не удалась после 4 попыток

Подробнее здесь: https://stackoverflow.com/questions/784 ... ord-add-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»