将文件的内容显示给浏览器,而不是下载它
本文关键字:下载 浏览器 文件 显示 | 更新日期: 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";