Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中建立ssl连接时,如何检查无效凭据#_C#_.net_Ssl_Authorization_Snmp - Fatal编程技术网

C# 在C中建立ssl连接时,如何检查无效凭据#

C# 在C中建立ssl连接时,如何检查无效凭据#,c#,.net,ssl,authorization,snmp,C#,.net,Ssl,Authorization,Snmp,我有一个方法,它试图捕获一个异常,当通过SSL连接时,如果提供了无效的凭据,可能会引发该异常。凭据通过SNMP提供。但我并不总是能够将异常解释为无效凭据,因为您可以看到,我只是试图读取抛出异常的消息,该消息因设备而异 我做的对吗?是否有任何简单的方法来检查建立连接所需的凭据是否有效?当抛出的异常消息从一个设备到另一个设备发生变化时,我在这里完全不知所措 谢谢你的指点 try { string ipSSL = string.Format(URL_CWIS_HELPSTRING, "s",

我有一个方法,它试图捕获一个异常,当通过SSL连接时,如果提供了无效的凭据,可能会引发该异常。凭据通过SNMP提供。但我并不总是能够将异常解释为无效凭据,因为您可以看到,我只是试图读取抛出异常的消息,该消息因设备而异

我做的对吗?是否有任何简单的方法来检查建立连接所需的凭据是否有效?当抛出的异常消息从一个设备到另一个设备发生变化时,我在这里完全不知所措

谢谢你的指点

try
{
    string ipSSL = string.Format(URL_CWIS_HELPSTRING, "s", SecurityBindingProxy.Destination.Address.Value.Host, "/");
    System.Net.WebRequest https = System.Net.HttpWebRequest.Create(ipSSL);
    System.Net.ServicePointManager.ServerCertificateValidationCallback = WsdlClient.ServiceRequirements.WsdlServiceRequirements.SSLCheckCallback;
    https.Credentials = new System.Net.NetworkCredential(SNMP.ConnectionInfo.Instance.Username, SNMP.ConnectionInfo.Instance.Password); ;
    System.Net.HttpWebResponse responseSSL = (System.Net.HttpWebResponse)https.GetResponse();
    responseSSL.Close();
}
catch (Exception ex)
{
    if (ex.Message.Contains("Unauthorized")
        || ex.Message.Contains("401"))
    {
        return -2;
    }
}

您希望捕获更特定类型的异常,而不是解析异常消息。如果您查看文档,您将看到有文档记录的抛出的异常类型。如果捕获到
WebException
,则无需手动解析字符串即可找到HTTP状态,例如:

catch (System.Net.WebException ex)
{
    var errorResponse = (System.Net.HttpWebResponse)ex.Response;
    if (errorResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
    {
        //...
    }
}

你为什么不捕获异常类型而不检查消息是否包含“Unauthorized”?@Ramhound:因为,我不知道要捕获哪种特定类型的异常。此外,这些异常还包含错误消息,这些消息有时表示http 401,有时表示404,并且没有合适的.net异常类。这正是我的问题。谢谢,但我需要知道如何捕获与无效凭据相关的异常。指示用户无权查看内容的响应代码是否表示凭据有问题?@Duncan Smart:哇!非常感谢你教我一些新东西,我现在可以让我的代码更优雅了。但是,我试图通过SNMP连接到许多设备,所有这些设备似乎都会抛出各种各样的HttpWebResponse来查找无效凭据。我刚才试过你的建议,但没有多大帮助。我认为你应该做一些调查,并记录你从这些设备中获得的状态码。@DuncanSmart:到目前为止,我只是在做这件事。我在想是否还有其他优雅的方法。我会接受你的解决方案,因为我学到了一些新东西。谢谢。