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

时间:2015-10-08 10:15:00

标签: c# .net wcf rest

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

在界面中我有下一个方法:

[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时,浏览器会下载文件而不是显示它。

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

1 个答案:

答案 0 :(得分:1)

即使您通过让它返回Stream来创建"raw" WCF REST response method,您仍然只能使用该流控制HTTP消息的响应正文。

因此,您在返回的流中写入的HTTP标头将被视为内容,而不是接收方的标头。

您需要按照WCF REST: specify content-type on WebGet Attribute doesn't seem to be working

中的说明明确设置标头
WebOperationContext.Current.OutgoingResponse.ContentType = "text/html";