我正在尝试构建一个简单的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
时,浏览器会下载文件而不是显示它。
如何在浏览器中显示此内容?
答案 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";