IE将url视为下载,而不是HTML页面

本文关键字:HTML 页面 下载 url IE | 更新日期: 2023-09-27 18:18:38

我正在使用自托管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会将url视为下载请求并提示"您想从本地主机打开或保存页面吗?"

我该怎么做才能让IE把url当作网页?(我已经在演示页面中添加了doctype头;但这不能阻止IE将其视为下载请求。)

编辑。

Ok。我使用Fiddler来检查访问本地主机时的响应。IE和Firefox得到的响应完全相同。在页眉中,内容类型写成:

Content-Type: text/html,text/html

Firefox将此内容类型视为text/html,但是IE不识别此内容类型(它只识别单个text/html)!

所以这让我相信这是由于SS中的错误。

<<p> 解决方案/strong> 一个解决方案是显式地设置内容类型:
        return new HttpResult(
            new MemoryStream(Encoding.UTF8.GetBytes(html)), "text/html");

IE将url视为下载,而不是HTML页面

我不知道你到底是什么问题。如果您想提供html页面,有一种不同的方法可以做到这一点。

Servicestack支持剃刀引擎作为插件,这是有用的,如果你喜欢服务html页面,也可以绑定数据与它。另一种方法是在这里解释。razor.servicestack.net。这可能有用。如果你需要更多的细节,请告诉我。