我正在尝试构建一个asp.net mvc 4应用程序。
我希望应用程序包含HTML站点和restful api,例如
www.mysite.com/MyDetails/ www.mysiste.com/api/users/{userid}/Details /
在上面的例子中,我将使用2个控制器类。
我还在WebApiConfig中添加了一个简单的“用户路线”:
routeTemplate:“api / users / {userid} / {controller} / {id}
在我的早期测试中,似乎以下情况无效:
www.mysite.com/api/users/12345/MyDetails/ www.mysite.com/Details /
这两个都返回404。
这绝对是一件好事,但我想要找出的是为什么它不起作用? 我可以依靠它不工作,还是仅仅在我的简单测试中巧合?
我读过有关人们正在努力开发一个包含HTML和REST api的单个MVC应用程序/项目,但最常见的抱怨似乎是你无法复制控制器名称,看起来你似乎不能简单使用命名空间来区分它们。
在这个例子中,我故意设计了班级名称,以避免任何冲突,所以其他陷阱等待绊倒我?
谢谢,
Chris A
答案 0 :(得分:0)
检查您的路线文件,Global.asax
下的RegisterRoutes
。 MapRoute
调用应告诉您MVC路由需要知道的一切。请记住,路线的顺序很重要:顶部路线优先于底部。 Web API使用WebApiConfig
类和MapHttpRoute
调用来配置路由。
答案 1 :(得分:0)
请确保您已将(MVC)路线置于您希望控制的操作之上,默认操作为索引。
dt %>% ggplot(aes(x = factor(cyl), y = `0`, fill = factor(cyl))) +
geom_bar(stat = 'identity') +
geom_point(aes(x = factor(cyl), y = `1`), colour = 'black') +
geom_segment(aes(x = factor(cyl), xend = factor(cyl), y = `0`, yend = `1`))
上面的代码将按以下方式命中此操作方法(前提是您的控制器是从apiController或Controller注册并派生的): IISExpress中的http://localhost:54541/help。
要注册请执行以下操作:
在" global.asax.cs"中,您需要添加:
AreaRegistration.RegisterAllAreas();