2

我用这样的方式调用远程操作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.";
}
4

2 回答 2

3

Httpstatus 代码喜欢errorcool无效,您可以在此处找到所有状态代码。

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

throw new HttpException(500, "Error");

在这种情况下,我使用 http 响应状态代码 500(内部服务器错误)。

另一个考虑是看一下这种服务的 ASP.NET WebApi,我认为它比 Asp.NET MVC 控制器更适合。

于 2012-08-30T13:46:03.810 回答
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(); 

结果状态将为您提供错误状态和描述

于 2012-08-30T10:29:22.810 回答