Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将System.Net.Http.HttpResponseMessage转换为System.Web.Mvc.ActionResult_C#_Asp.net Mvc_Httpclient_Actionresult_Httpresponsemessage - Fatal编程技术网

C# 如何将System.Net.Http.HttpResponseMessage转换为System.Web.Mvc.ActionResult

C# 如何将System.Net.Http.HttpResponseMessage转换为System.Web.Mvc.ActionResult,c#,asp.net-mvc,httpclient,actionresult,httpresponsemessage,C#,Asp.net Mvc,Httpclient,Actionresult,Httpresponsemessage,我正在编写一个简单的代理应用程序,它获取“URL地址”,比如“/xController/xMethod”,然后通过HttpClient从另一个web应用程序获取结果并显示结果 我的方法: public ActionResult Index(string urlAddress) { var data = ""; if (Request.ContentLength > 0 && httpRequestMessage != null) data = ht

我正在编写一个简单的代理应用程序,它获取“URL地址”,比如“/xController/xMethod”,然后通过HttpClient从另一个web应用程序获取结果并显示结果

我的方法:

public ActionResult Index(string urlAddress)
{
   var data = "";
   if (Request.ContentLength > 0 && httpRequestMessage != null)
       data = httpRequestMessage.Content.ReadAsStringAsync().Result;

    using (var client = new HttpClient())
    {
      // fill header and set target site url 

      // Make Post Data
      var buffer = System.Text.Encoding.UTF8.GetBytes(data);
      var byteContent = new ByteArrayContent(buffer);
      if (!String.IsNullOrWhiteSpace(Request.ContentType) && !String.IsNullOrEmpty(Request.ContentType))
           byteContent.Headers.ContentType = new MediaTypeWithQualityHeaderValue(Request.ContentType);

       // make query string ....

       // sending request to target site         
       HttpResponseMessage response = null;
       if (Request.HttpMethod.ToUpper() == "POST")
             response = client.PostAsync(urlAddress + queryString, byteContent).Result;
       else
             response = client.GetAsync(any + queryString).Result;

    // My Problem is in here....
    return ....;              
  }
}
我想在浏览器中显示我的请求,当响应是文件时,浏览器下载内容,当响应是Json时,显示为Json等等

(例如) 我知道什么时候我想显示HTML。我正在使用:

ActionResult x = new ContentResult()
                {
                    Content = response.Content.ReadAsStringAsync().Result,
                    ContentType = response.Content.Headers.ContentType.MediaType
                };
                return x;

或者,当我希望使用JsonActionResult以html格式返回,或者使用FileContentResult以文件形式返回,但我希望快速可靠的解决方案将任何HttpResponseMessage转换为最佳ActionResult类时,我建议您使用Web API 2中引入的IHttpActionResult作为操作结果。 您可以使用ResponseMessage方法将HttpResponseMessage转换为IHttpActionResult 从ApiController。因此,您的控制器应该继承ApiController

我的解决方案:

 public class TrainController : ApiController
{
    public IHttpActionResult SomeAction()
    {
        HttpResponseMessage responseMsg =
            new 
            HttpResponseMessage(HttpStatusCode.RedirectMethod);

        /*responseMsg = your implementation*/

        IHttpActionResult response = this.ResponseMessage(responseMsg);
        return response;
    }
}

谢谢,非常有帮助