1

我有以下方法从远程服务器读取响应

public string GetResponse()
        {
            string url = "http://remoteserver.com/getdata.jsp?id=515";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream resStream = response.GetResponseStream();
            Encoding enc = System.Text.Encoding.GetEncoding(1252);
            StreamReader loResponseStream = new
            StreamReader(response.GetResponseStream(), enc);

            string ServerResponse = loResponseStream.ReadToEnd();

            loResponseStream.Close();
            response.Close();
            return ServerResponse;
        }

在我的actionresult我调用这个方法如下

public ActionResult Index()
{
  string resp= GetResponse();

   return View();
}

现在不是显示我查看浏览器而是提示我保存文件。如何避免这种情况并正常显示视图

4

2 回答 2

0

尝试这个

public ActionResult Index()
{
    string resp= GetResponse();

    return Content(resp);
}
于 2012-09-30T13:27:47.427 回答
0

您可以使用自定义操作结果

public class TextActionResult : ActionResult
{
    readonly string _response;

    public TextActionResult() { }

    public TextActionResult(string response)
    {
        _response = response;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.Clear();
        context.HttpContext.Response.ContentType = "text/html";  //text/plain?
        context.HttpContext.Response.Write(_response);
        //you may want further tweaks here
        }
}

和你的控制器

public TextActionResult Index()
{
   string resp= GetResponse();
   return new TextActionResult (resp);
}

ps - 看看使用 WebClient,例如

string url = "http://remoteserver.com/getdata.jsp?id=515";
using (var client = new WebClient())
{
     client.Encoding = System.Text.Encoding.GetEncoding(1252);
     var result = client.DownloadString(url);
}
return result;
于 2012-09-27T07:39:09.187 回答