返回带有html扩展名的文件时,Servicestack返回错误的内容类型

时间:2016-11-08 09:56:39

标签: servicestack

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

1 个答案:

答案 0 :(得分:2)

我假设您正在提出的请求是:

GET /files/myfile.html

由于.html文件扩展名是ServiceStack中的内置注册格式,因此它正在撤销HTML,因此它假设您显式请求API中的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); 

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

  

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