C# HttpWebResponse状态代码toString

C# HttpWebResponse状态代码toString,c#,http-status-code-302,C#,Http Status Code 302,我正在尝试处理302重定向响应。我看到了HttpStatusCode的toString方法的不同行为 HttpWebResponse response = (HttpWebResponse) _webRequest.GetResponse(); if (response.StatusCode != HttpStatusCode.OK) throw new TestException(TestException.HttpErrorClass,response.StatusCode.

我正在尝试处理302重定向响应。我看到了HttpStatusCode的toString方法的不同行为

HttpWebResponse response = (HttpWebResponse) _webRequest.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
        throw new TestException(TestException.HttpErrorClass,response.StatusCode.ToString(),"");
问题是,当我调试并查看响应对象时,状态代码显示“已找到”状态。但当我执行此代码时,会得到“重定向”字符串。 此外,它不会一致地返回“重定向”字符串,有时会在我同事的机器上返回“已找到”字符串


从.net 4.0到.net 4.5,toString方法是否有任何更改?有人见过类似的问题吗

如果查看HttpStatusCode的定义,您会发现值
302
有多个枚举成员。根据文档,当有多个定义时,生成的字符串值并不总是相同的。看看GetName方法(ToString基本上就是这样做的)

如果多个枚举成员具有相同的基础值,则GetName方法保证返回其中一个枚举成员的名称。但是,它不能保证总是返回同一枚举成员的名称。因此,当多个枚举成员具有相同的值时,应用程序代码不应依赖于返回特定成员名称的方法


查看此答案以了解更多信息:

如果查看HttpStatusCode的定义,您会发现值
302
有多个枚举成员。根据文档,当有多个定义时,生成的字符串值并不总是相同的。看看GetName方法(ToString基本上就是这样做的)

如果多个枚举成员具有相同的基础值,则GetName方法保证返回其中一个枚举成员的名称。但是,它不能保证总是返回同一枚举成员的名称。因此,当多个枚举成员具有相同的值时,应用程序代码不应依赖于返回特定成员名称的方法


看看这个答案,了解更多信息:

根据Nathan的答案,HttpStatusCode枚举中实际上有两个条目。 看


因此,取决于您得到的响应是这个字符串还是另一个字符串,但代码总是相同的。

根据Nathan的回答,HttpStatusCode枚举中实际上有两个条目。 看


因此,取决于您得到的响应是这个字符串还是另一个字符串,但代码总是一样的。

好的,非常感谢。但我仍然想知道,为什么我会像在另一台机器上一样得到一致的“重定向”字符串,而我们会像在另一台机器上一样得到一致的“找到”字符串。不同之处在于.net版本。这有什么影响吗?就凭医生说的,这是不确定的。它们实现函数的方式在不同版本之间可能有所不同,但它们不会提交将显示的名称。我建议使用
Enum.GetNames()
方法,或者全部显示它们(或者在此时选择要显示的名称)。好的,非常感谢。但我仍然想知道,为什么我会像在另一台机器上一样得到一致的“重定向”字符串,而我们会像在另一台机器上一样得到一致的“找到”字符串。不同之处在于.net版本。这有什么影响吗?就凭医生说的,这是不确定的。它们实现函数的方式在不同版本之间可能有所不同,但它们不会提交将显示的名称。我建议使用
Enum.GetNames()
方法,或者全部显示它们(或者在此时选择要显示的名称)。