2012-08-30 50 views
1

我打電話了WebRequest那樣的遠程操作:返回狀態錯誤的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

如何做一個樣品的動作看起來像要返回一個錯誤呢? – nemesv

+0

你的迴應是什麼?狀態碼? – VIRA

+0

@nemesv - 我加了。 –

回答

2

的HTTPStatus像errorcool代碼無效,here你可以找到所有的狀態碼。

相反的錯誤時返回一個字符串,你能做的最好的是拋出一個HttpException:

throw HttpException(500, "Error"); 

在這種情況下,我使用狀態代碼500(內部服務器錯誤)。

另一個考慮因素是看在ASP.NET的WebAPI對於這種服務,我認爲這是適合更好的那麼Asp.NET MVC控制器。

+0

謝謝。另見:http://stackoverflow.com/questions/4911212 –

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(); 

結果狀態會給你的錯誤狀態和說明