【问题标题】:Servicestack return wrong content type when returning a file with html extension返回带有 html 扩展名的文件时,Servicestack 返回错误的内容类型
【发布时间】:2017-03-21 21:33:48
【问题描述】:

我正在测试 Servicestack Rest Files 服务。当从 angularjs 调用它并要求返回 html 文件时,结果以标准 servicestack html 格式而不是 json 格式返回。即使附加 ?format=json,它也不能正常工作。我正在尝试浏览 html 文件,然后尝试将其加载到 ace 编辑器中。我认为 Servicestack 对响应类型感到困惑。我检查并在执行请求时在客户端将 Content-Type 设置为 application/json。

【问题讨论】:

    标签: servicestack


    【解决方案1】:

    我假设您提出的请求是:

    GET /files/myfile.html
    

    它正在重新处理 HTML,因为 .html 文件扩展名是 ServiceStack 中的一种内置注册格式,因此它假定您显式 中请求 API >HTML 格式。

    您可以通过在 QueryString 上指定文件 Path 来避免这种歧义,例如:

    GET /files?Path=myfile.html
    

    这告诉 ServiceStack 使用Accept 标头中指定的最合适的格式将其发回。或者,如果您愿意,也可以通过在路径信息末尾添加 {.ext} 来明确指定格式,例如:

    GET /files.json?Path=myfile.html
    

    如果您不使用 ServiceStack 的内置 HTML 支持,另一种选择是删除 HtmlFormat 插件,例如:

    Plugins.RemoveAll(x => x is HtmlFormat); 
    

    这将使.html 不再是注册格式,因此.html 扩展名将是良性的。

    注意:删除 HtmlFormat 也会删除内置的 HTML 功能,例如其 auto HTML pages

    【讨论】:

      猜你喜欢
      • 2014-12-01
      • 2021-04-15
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 2017-06-17
      • 2011-05-17
      相关资源
      最近更新 更多