【发布时间】:2014-12-10 16:38:04
【问题描述】:
我在做一个webApi应用,我想获取的api如下:
- api/v1/lists/?params...
- api/v1/meta/?params...
- api/v1/debug
有些 ApiController 可以很好地用于“列表”和“元”路由,但 api/v1/debug 应该返回静态 html 页面。
我可以想到两种实现方式:
- 通过特殊控制器返回类似
View("mypage.html")或 - 在 WebApiConfig 中配置路由以将
api/v1/debug等请求重定向到mypage.html
但是,我无法获得任何这些方式的工作版本:HttpResponseMessage 没有像 HtmlContent 或类似的内容类型,所以我不能这样做
config.Routes.MapHttpRoute(
name: "Debug",
routeTemplate: "api/v1/debug/",
defaults: new { controller = "Debug" }
);
...
public class DebugController:ApiController
{
public HttpResponseMessage Get()
{
return new HttpResponseMessage()
{
Content = new HtmlContent("mypage.html");
};
}
}
我无法在 WebApiConfig 中获得正确的重定向:
//this results into 400 status code:
config.Routes.MapHttpRoute("Default", "api/v1/debug/", "~/mypage.html");
您能告诉我这个问题的正确解决方案是什么吗? 是否可以在 WebApi 应用程序中将静态 html 页面与 Action Results 结合起来?
【问题讨论】:
-
我认为 HtmlContent 需要 HTML 文本,而不是文件。您可以使用流式阅读器读取文件,然后返回内容...我不知道有什么可以像您期望的那样直接返回 HTML 内容...但我不是 Web API 专家。
-
@BrianMains,感谢您的评论,但正如我所提到的,根本没有 HtmlContent 这样的类,我只是为了展示我想要得到的理想:)
标签: c# asp.net asp.net-web-api2