我使用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
好或不好)。
但即使操作返回response.StatusDescription
,"OK"
始终等于null
。
如何将错误强制为状态或检索邮件(例如"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.";
}
答案 0 :(得分:3)
error
或cool
等Httpstatus代码无效,here您可以找到所有状态代码。
而不是在出错时返回一个字符串,你可以做的最好就是抛出一个HttpException:
throw new HttpException(500, "Error");
在这种情况下,我使用http响应状态代码500(内部服务器错误)。
另一个考虑因素是看看这种服务的ASP.NET WebApi,我认为它比Asp.NET MVC控制器更合适。
答案 1 :(得分:0)
只需将响应发送到StreamReader,如下所示。
var site = "http://remoteSite.com/controller/action/id";
var request = (HttpWebRequest)WebRequest.Create(site);
var response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
// This will contain the status of message e.g. failed, ok etc.
string resultStatus = reader.ReadToEnd();
结果状态将为您提供错误状态和说明