我正在使用自托管ServiceStack开发本地服务器。我对一个演示网页进行了硬编码,并允许在localhost:8080/page
public class PageService : IService<Page>
{
public object Execute(Page request)
{
var html = System.IO.File.ReadAllText(@"demo_chat2.html");
return html;
}
}
// set route
public override void Configure(Container container)
{
Routes
.Add<Page>("/page")
.Add<Hello>("/hello")
.Add<Hello>("/hello/{Name}");
}
适用于Chrome / Firefox / Opera,但是,IE会将该网址视为下载请求并宣传&#34;您是否要从localhost打开或保存页面?&#34;
如何让IE将网址视为网页? (我已经在演示页面中添加了doctype标题;但这无法阻止IE将其视为下载请求。)
编辑。
确定。我在访问localhost时使用了Fiddler来检查响应。 IE和Firefox获得的响应完全相同。在标题中,内容类型写为:
Content-Type: text/html,text/html
Firefox会将此内容类型视为text/html
,但IE无法识别此内容类型(它只能识别单个text/html
)!
所以这让我相信这是由于SS中的一个错误。
解决方案
一种解决方案是明确设置内容类型:
return new HttpResult(
new MemoryStream(Encoding.UTF8.GetBytes(html)), "text/html");
答案 0 :(得分:1)
我不知道你的确切问题是什么。如果你想提供html页面,有一种不同的方式来做到这一点。
Servicestack支持razor引擎作为插件,如果您想要提供html页面,并且您可以使用它绑定数据,这非常有用。这里解释了不同的做法。 razor.servicestack.net。这可能很有用。如果您需要任何其他细节,请与我们联系。