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 */ }

リモートアクションでは、メッセージ or null(if idis good or not) を返します。

ただし、アクションが返された場合でも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

errorのようなまたはcool無効なHttpstatusコード。ここで、すべてのステータスコードを見つけることができます。

エラー時に文字列を返す代わりに、できる最善の方法はHttpExceptionをスローすることです。

throw new HttpException(500, "Error");

この場合、http応答ステータスコード500(内部サーバーエラー)を使用します。

もう1つの考慮事項は、この種のサービスについてASP.NET WebApiを調べることです。これは、Asp.NETMVCコントローラーよりも適していると思います。

于 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 に答える