我一直在努力解決這個問題至少4個小時,試着找到每個解決方案。如何從一個MVC項目路由到另一個項目中的MVC ApiController?
我的主項目是用Asp.Net和MVC建立的,它可以很好的路由到項目中的控制器。我正在集成一個庫,公開一個JSON API,在另一個項目中使用ApiControllers,但我無法獲得主項目路由到庫項目中的任何東西,它只是返回一個海峽404.
在我的主項目Global.asax中:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{*allaxd}", new { allaxd = @".*\.axd(/.*)?" });
routes.IgnoreRoute("{*less}", new { less = @".*\.less(/.*)?" });
//ignore aspx pages (web forms take care of these)
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.IgnoreRoute("{resource}.css/{*pathInfo}");
//ControllerBuilder.Current.DefaultNamespaces.Add("Nexus.Controllers");
routes.MapRoute(
"testapi",
"testapi/{controller}/{action}",
new
{
controller = "User",
action = "Get"
},
new[] { "Nexus.Controllers" }
);
routes.MapRoute(
// Route name
"Default",
// URL with parameters
"{controller}/{action}/{id}",
// Parameter defaults
new { controller = "Events", action = "Index", id = "" }
);
}
在我的庫項目UserController中:
namespace Nexus.Controllers
{
public class UserController : ApiController
{
public Object Get(string id)
{
var guid = new Guid(id);
var user = crm.Users.Where(x => x.UserId == guid).FirstOrDefault();
return new
{
id = user.UserId,
name = user.UserName,
email = user.Email,
extension = user.Ext,
phone = user.Phone
};
}
}
}
,我希望作品的網址中都沒有: /testapi /testapi /用戶 /testapi /用戶/ G ?等 /testapi /用戶/獲取ID = 1
他們都返回404
我甚至用路線調試器來驗證路徑似乎是正確設置:
我錯過了什麼?
我想你已經添加了外部庫作爲你的項目的參考? –
是的,我的項目正在使用庫項目中的很多數據模型。 – DShook
有點困惑,你正在使用的Action方法'Get'。我習慣於返回[ActionResult]的動作(http://msdn.microsoft.com/en-us/library/dd410269(v = vs.98).aspx) –