Есть ли в этом коде очевидные ошибки, например «разомкнутый цикл» или «не завершено»?C#

Место общения программистов C#
Ответить
Anonymous
 Есть ли в этом коде очевидные ошибки, например «разомкнутый цикл» или «не завершено»?

Сообщение Anonymous »

Прежде всего: я не умею «говорить» на C#, но немного знаю, как работает этот язык программирования.
О себе Strong>
Я пытаюсь реализовать сценарий C# в системе видеонаблюдения Genetec Makro. Он должен отправить запрос HTTPS GET для изменения параметра на сервере.
Сборка

Я нахожусь в отдельном VLAN без подключения к Интернету. Я предполагаю, что у него есть прокси, который позволяет пройти этому URL. URL-адрес прекрасно работает в браузере.
Проблема
Проявляется следующим образом: я могу запустить скрипт и оно работает. Когда я запускаю его снова позже, он ничего не делает (возможно, он сработает в любое время позже, но я не смог это подтвердить).
Код — это то, что последний человек оставил после ухода и некоторые ЧатGPT в помощь. ChatGPT добавил случайный параметр. Я реализовал это, потому что человек, создавший аналог (сторона URL), сказал, что это может быть проблема с кэшем прокси.
Вопросы
Есть ли проблема в коде?
Нужно ли мне что-то добавить, чтобы он работал лучше/безопаснее?
using System.Net;
using System.IO;
using Genetec.Sdk;
using Genetec.Sdk.Entities;
using Genetec.Sdk.Enumerations;
using Genetec.Sdk.Queries;
using Genetec.Sdk.Scripting;
using Genetec.Sdk.Scripting.Interfaces.Attributes;
using System;

[MacroParameters()]
public sealed class myMacro : UserMacro
{
///
/// Entry point of the macro. Provide an implementation of this method.
///
public override void Execute()
{
// Generiere einen zufälligen Wert für rand
string randomValue = GenerateRandomValue();

// Ersetze den festen Wert von rand in der URL mit dem zufälligen Wert
string url = "https://ANYURL.com/cgi-bin/control2.php ... m5=0&rand=" + randomValue;

WebRequest wrGETURL;
wrGETURL = WebRequest.Create(url);
System.IO.Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
}

///
/// Generiert einen zufälligen alphanumerischen String.
///
/// Zufälliger String.
private string GenerateRandomValue()
{
const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
return new string(Enumerable.Repeat(chars, 10).Select(s => s[random.Next(s.Length)]).ToArray());
}

///
/// Called when the macro needs to clean up.
///
protected override void CleanUp()
{
// Release objects created by the Execute method, unhook events, and so on.
}
}

Примечание: ANYURL и ENTER_KEY находятся в готовом коде. Извините, я не могу их опубликовать.
Что я пробовал
Я добавил случайную часть в URL-адрес, чтобы уверен, что с прокси-кешем проблем нет. Я спросил в чате, что может быть не так. Я проверил большую часть этого (я еще не смог полностью проверить, что брандмауэр разрешает каждый запрос, но когда он работает в браузере, он также должен работать непосредственно из Центра безопасности/Genetec)
Найдено решение 1 (ChatGPT):
using System;
//using System.IO;
using System.Net;
//using Genetec.Sdk;
//using Genetec.Sdk.Entities;
//using Genetec.Sdk.Enumerations;
//using Genetec.Sdk.Queries;
using Genetec.Sdk.Scripting;
using Genetec.Sdk.Scripting.Interfaces.Attributes;

[MacroParameters()]
public sealed class myMacro : UserMacro
{
///
/// Entry point of the macro. Provide an implementation of this method.
///
public override void Execute()
{
try
{
string url = "https://ANYURL.com/cgi-bin/control2.php ... KEY&cam5=1";
WebRequest wrGETURL = WebRequest.Create(url);

using (WebResponse response = wrGETURL.GetResponse())
using (System.IO.Stream objStream = response.GetResponseStream())
{
// Process the response stream here
}
}
catch (Exception ex)
{
// Log or handle the exception appropriately
Console.WriteLine($"An error occurred: {ex.Message}");
}
}

///
/// Called when the macro needs to clean up.
///
protected override void CleanUp()
{
// Release objects created by the Execute method, unhook events, and so on.
}
}


Подробнее здесь: https://stackoverflow.com/questions/780 ... t-finished
Ответить

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

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

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

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

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