c# - 将状态错误返回给 WebRequest

标签 c# asp.net-mvc httpwebrequest

我使用 WebRequest 调用远程操作,如下所示:

var site = "http://remoteSite.com/controller/IsolateSite?url=xxx&target=in";
var request = (HttpWebRequest)WebRequest.Create(site);
var response = (HttpWebResponse)request.GetResponse();

if (response.StatusDescription == "OK")
{ /* code */ }
else
{ /* code */ }

在远程操作中,我返回一条消息或 null(无论 id 是否良好)。

但是,即使操作返回 nullresponse.StatusDescription 也始终等于 “OK”

如何强制将错误作为状态或检索消息(例如 “Cool.”“Error.”)?


远程操作示例:

public static string IsolateSite(string url, string target)
{
    var serverManager = new ServerManager();
    var isHttps = url.Contains("https");
    var regex = new Regex("^(http|https)://");
    var host = regex.Replace(url, "");
    var instance = serverManager.Sites.First(site => site.Bindings.Any(binding => binding.Host == host));
    var pool = instance.Applications[0].ApplicationPoolName;

    if ((pool.Contains("isolation") && target == "out") || (!pool.Contains("isolation") && target == "in"))
    {
        return "Error."; //or return null but the status code is OK so useless
    }

    //etc...

    return "Cool.";
}

最佳答案

errorcool 等 Httpstatus 代码无效,here您可以找到所有状态代码。

最好不要在错误时返回字符串,而是抛出 HttpException:

throw new HttpException(500, "Error");

在本例中,我使用 http 响应状态代码 500(内部服务器错误)。

另一个考虑因素是考虑此类服务的 ASP.NET WebApi,我认为它比 Asp.NET MVC Controller 更适合。

关于c# - 将状态错误返回给 WebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12194166/

相关文章:

.net - 使用 HttpClient,如何将 XDocument 直接保存到请求流?

c# - 如何在 Silverlight 4 中等待状态改变转换完成?

c# - 裸偏类

java - 在 C# 中验证 RSA SHA256 签名

javascript - 在 ASP.NET MVC 中填充莫里斯图表

c# - Nuget MVC PagedList 页面链接无法正常工作

.net - 使用 HttpWebRequest (.NET) 处理身份验证

c# - 在代码中自动缩进括号的算法

asp.net-mvc - ASP.NET Web-API不序列化只读属性

c# - Web 服务请求在第 3 次命中时超时