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

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

Сообщение Гость »

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

Я нахожусь в отдельной VLAN без Интернета. Связь. Я предполагаю, что у него есть прокси, который позволяет пройти этому URL. URL-адрес прекрасно работает в браузере.
Проблема
Проявляется следующим образом: я могу запустить скрипт, и он работает. Когда я запускаю его снова позже, он ничего не делает. (Может быть, это сработает в любое время позже, но я не смог это подтвердить)
Код состоит из того, что последний человек оставил после ухода, и некоторой помощи ChatGPT. ChatGPT добавил случайный параметр. Я реализовал это, потому что человек, создавший аналог (URL-сторона), сказал, что это может быть проблема с кэшем прокси.
Вопросы strong>
Есть ли проблема в коде?
Нужно ли мне что-то добавить, чтобы он работал лучше/безопаснее?
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)
Найдено решение i(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#»