Я пытаюсь вызвать сценарий PowerShell, использующий токены.
var results = powerShell.Invoke();
if (powerShell.HadErrors)
{
foreach (var error in powerShell.Streams.Error)
{
ErrorLog.LogError("Error in invoking powershell script " + error.ToString());
if (error.Exception.Message.Contains("The remote server returned an error: (401) Unauthorized."))
{
//Recreate the tokens
}
}
}
Понятно, я получаю указанное выше сообщение об ошибке. Достаточно ли просто проверить это конкретное сообщение? Если да, то что, если они изменят сообщение в будущем или, возможно, язык системы изменится.
Я также проверил класс Exception, это класс WebException.





Вы можете обработать эти исключения, просмотрев свойство HttpWebResponse.StatusCode. Вот пример:
void HandleWebException(WebException webException)
{
HttpWebResponse? response = webException.Response as HttpWebResponse;
if (response is not null)
{
switch (response.StatusCode)
{
case HttpStatusCode.Unauthorized:
// handle 401
break;
case HttpStatusCode.TooManyRequests:
// handle 429
break;
// case etc...
}
}
}
void HandleWebException(Exception exception)
{
// handle general exceptions
}
PowerShell powerShell = PowerShell.Create();
var results = powerShell.Invoke();
if (powerShell.HadErrors)
{
foreach (var error in powerShell.Streams.Error)
{
HandleWebException(error.Exception);
}
}
вы можете использовать
Exception.Response.StatusCodeприведение какint, а затем включать каждый код ошибки для их обработки