如何触发asp.net web api的动作?

27 浏览
0 Comments

如何触发asp.net web api的动作?

有一个很好的问题在这里:如何将Web API添加到现有的ASP.NET MVC 4 Web应用程序项目中?不幸的是,这并不足以解决我的问题。我已经尝试了两次,以确保我没有做错任何事情。我右键单击了"Controllers",添加了一个名为"Web API 2 Controller with actions, using Entity Framework"的项,在其中选择了我的模型类和数据库上下文。一切都进行得很顺利...但是...每次我尝试访问/api/Rest时,我都会收到404错误(我的Controller的名称是RestController)。

0
0 Comments

问题的原因是Global.asax中路由的顺序问题。通过将GlobalConfiguration.Configure(WebApiConfig.Register)的位置从第四放到第二,问题得到解决。

解决方法是确保api路由首先得到评估,或者创建更严格的mvc路由(以便框架不会尝试查找'ApiController')。在作者的情况下,创建了一个名为Api的区域,这是一个不好的主意,无论设置如何都会返回404错误。所以,不要创建名为Api的区域。

0
0 Comments

当添加新的路由时,我们必须牢记要将特定的路由放在顶部,后面跟着更通用的路由。否则,您的Web应用程序将无法正确进行路由。这是因为ASP.NET MVC的路由框架按照注册的顺序来匹配路由规则,所以如果我们将通用的路由放在顶部,它会优先匹配请求,而不会到达特定的路由规则。

在上面的引用中,作者建议我们在添加路由规则时遵循特定>通用的原则,以确保我们的Web应用程序能够正确地进行路由。这样做的原因是,如果我们将通用的路由放在顶部,它会匹配大多数请求,而特定的路由规则将永远不会得到应用。

在ASP.NET Web API中,我们可以通过以下方式来配置路由规则:

1. 打开Global.asax.cs文件。

2. 找到Application_Start方法。

3. 将以下代码添加到方法中:

GlobalConfiguration.Configure(WebApiConfig.Register);

这一行代码的作用是注册Web API的路由规则。

同样重要的是要注意,在注册Web API的路由规则之前,我们还需要注册MVC的路由规则。这是因为在MVC应用程序中,Web API和MVC共享相同的路由表。所以我们需要确保Web API的路由规则在MVC的路由规则之前注册。

通过按照上述步骤配置路由规则,我们可以确保我们的ASP.NET Web API能够正确地路由请求,并将其发送到适当的操作方法中。这样,我们就可以成功地调用ASP.NET Web API的操作方法了。

0
0 Comments

在现有的MVC(5)项目中使用WebAPI,需要进行以下步骤:

1. 添加WebApi包:

Microsoft.AspNet.WebApi

Microsoft.AspNet.WebApi.Client

Microsoft.AspNet.WebApi.Core

Microsoft.AspNet.WebApi.WebHost

Newtonsoft.Json

2. 将WebApiConfig.cs文件添加到App_Start文件夹中:

using System.Web.Http;
namespace WebApiTest
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            // Web API routes
            config.MapHttpAttributeRoutes();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

3. 在Global.asax中添加以下代码:

GlobalConfiguration.Configure(WebApiConfig.Register);

重要提示: 必须在

AreaRegistration.RegisterAllAreas();

之后添加上述代码

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    //\\
    GlobalConfiguration.Configure(WebApiConfig.Register);
    //\\
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

问题的出现原因是在现有的MVC项目中使用WebAPI时,没有正确配置所需的组件和路由。为了解决这个问题,需要添加所需的WebApi包,并在App_Start文件夹中创建WebApiConfig.cs文件并进行正确的配置。此外,还需要在Global.asax文件中添加对WebApiConfig的配置。确保在Application_Start方法中正确地配置并注册所有区域后,再进行WebApi的配置。

0