将文件的内容显示给浏览器,而不是下载它

本文关键字:下载 浏览器 文件 显示 | 更新日期: 2023-09-27 18:16:54

我正在尝试构建一个简单的RESTful应用程序。我有WFC服务。

在接口中我有next方法:

[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "get")]
Stream GetPage();

并实现这个方法:

public System.IO.Stream GetPage()
{
    MemoryStream ms = new MemoryStream();
    StreamWriter sw = new StreamWriter(ms);
    sw.WriteLine("HTTP/1.0 200 OK");
    sw.WriteLine("Content-Type: text/html");
    sw.Write(Properties.Resources.page);
    sw.Flush();
    ms.Position = 0;
    return ms;
}

Resource.page:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
    Hello word!!!
</body>
</html>

但是当我转到localhost/MyService/Get时,浏览器下载文件而不是显示它。

如何在浏览器中显示此内容?

将文件的内容显示给浏览器,而不是下载它

即使您通过让它返回一个Stream来创建一个"原始的" WCF REST响应方法,您仍然只能使用该流控制HTTP消息的响应体。

所以你写到流中返回的HTTP头将被接收器视为内容,而不是头。

你需要显式地设置标题,正如WCF REST中解释的那样:指定WebGet上的内容类型属性似乎不起作用:

WebOperationContext.Current.OutgoingResponse.ContentType = "text/html";