【问题标题】:WebApi in MVC3, cannot hit my API Controller (500 internal error)MVC3 中的 WebApi,无法访问我的 API 控制器(500 内部错误)
【发布时间】:2015-11-18 19:37:29
【问题描述】:

我的 AreaRegistration 中映射了以下路线:

public override void RegisterArea(AreaRegistrationContext context)
    {
        if (context != null)
        {
            context.Routes.MapHttpRoute(
                name: "API_Default",
                routeTemplate: "Areas/Test/AIO/api/{controller}/{id}",
                defaults: new
                {
                    id = RouteParameter.Optional
                });

当我查看 Global.asax 文件时,我可以看到 HttpRoute 正在注册,并在 RouteTable.Routes 中列为 {System.Web.Http.WebHost.Routing.HttpWebRoute}。

问题是,当我转到 url...https://myRoot/Areas/Test/AIO/api/AioApi/testhttps://myRoot/Areas/Test/AIO/api/AioApi 时,它给了我 500 内部服务器错误。

我不知道如何查看实际错误,当单步执行代码时,我在离开 Application_BeginRequest 后看不到任何内容。

我的控制器代码:

public class AioApiController : ApiController
{
    // GET api/<controller>
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

关于为什么我不能点击 API 控制器的任何见解?我可以在相同的上下文中使用我的常规 MVC 控制器。

非常感谢任何帮助!

【问题讨论】:

  • WebAPI 是否可用于 MVC3?
  • 您的控制器代码只有 1 个方法:Get()?
  • 是的,您可以使用 MVC3 安装 WebAPI。我的 api 控制器具有所有标准方法(Get、Post 等)...我只粘贴了我应该点击的那个。
  • 你为什么要通过 https?您确定您的程序正在侦听端口 23 并且证书和一切设置正确吗?对于调试,通常更容易通过 http
  • 我在一家公司工作,我们使用 https。 Https 适用于其他一切,包括我的常规 MVC 控制器。一切都设置正确......我一直在使用它。

标签: asp.net-mvc-3 asp.net-web-api routes


【解决方案1】:

我在 WebApi 中发现的一件事是有两个 Route 集合:System.Web.Routing.RouteCollectionSystem.Web.Http.HttpRouteCollection。我相信(但不记得)您需要使用后者才能使您的 ApiController 派生正常工作(幸运的是语法相同)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多