作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个作为 Windows 服务运行的自托管 WCF 服务,使用 WebAPI 来处理 REST 内容,它运行良好。
我意识到我真的应该使用 IIS 或类似的工具来制作实际的网页,但是有什么方法可以让服务调用返回“只是”html?
即使我指定“BodyStye Bare”,我仍然会得到围绕实际 HTML 的 XML 包装器,即
<?xml version="1.0" encoding="UTF-8"?>
<string> html page contents .... </string>
[WebGet(UriTemplate = "/start", BodyStyle = WebMessageBodyStyle.Bare)]
public string StartPage()
{
return System.IO.File.ReadAllText(@"c:\whatever\somefile.htm");
}
有什么办法可以做到这一点还是我应该放弃?
最佳答案
bodystyle 属性对 WCF Web API 没有影响。下面的示例将起作用。这不一定是最好的方法,但假设我没有打错字,它应该可以工作:-)。
[WebGet(UriTemplate = "/start")]
public HttpResponseMessage StartPage() {
var response = new HttpResponseMessage();
response.Content = new StringContent(System.IO.File.ReadAllText(@"c:\whatever\somefile.htm"));
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
return response;
}
将文件作为流读取并使用 StreamContent 而不是 StringContent 可能更有意义。或者创建您自己的接受文件名作为参数的 FileContent 类也很容易。
并且,自托管选项与使用 IIS 一样是返回静态 HTML 的可行方式。在幕后,他们使用相同的 HTTP.sys 内核模式驱动程序来传送位。
关于html - 如何从 WCF WebAPI WebGet 返回原始 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8117246/
我是一名优秀的程序员,十分优秀!