我已经为这个问题苦苦挣扎了至少 4 个小时,尝试了我能找到的所有解决方案。
我的主要项目是使用 Asp.Net 和 MVC 设置的,它们可以很好地路由到项目中的控制器。我正在集成一个库,该库公开了一个在另一个项目中使用 ApiControllers 的 JSON api,但我无法让主项目路由到库项目中的任何内容,它只返回一个 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
};
}
}
}
我希望工作的 URL 都没有: /testapi /testapi/User /testapi/User/Get /testapi/User/Get?id=1
他们都返回 404。
我什至使用了路由调试器来验证路由是否设置正确:
我错过了什么?