我正在编写一个MVC控制器,我需要同时处理数据返回以及长期轮询“数据已经改变”,就像来自SAME(!)url的行为一样。我无法做到这一点 - 我正在为现有的应用程序实现代理,所以我无法对API进行任何扩展/修改。
我的主要问题是: *必须立即完成POST操作。 * GET操作需要更长时间(有时可能需要数小时)。
我可以以某种方式重写两个转到不同的控制器吗?另一种选择是......嗯......同时做两个异步,只有POST结束了三个然后。
有人对此发表评论吗?
答案 0 :(得分:45)
您应该能够在路由级别使用约束来控制URL进入哪个控制器/操作。
routes.MapRoute(
"route that matches only GETs for your url",
"your url",
new { controller = "some controller", action = "some action" },
new { httpMethod = new HttpMethodConstraint("GET") }
);
routes.MapRoute(
"route that matches only POSTs for your url",
"your url",
new { controller = "some other controller", action = "some other action" },
new { httpMethod = new HttpMethodConstraint("POST") }
);