我使用 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
是否良好)。
但是,即使操作返回 null
,response.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.";
}
最佳答案
error
或 cool
等 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/