在我的MVC项目中创建WebService

本文关键字:创建 WebService 项目 我的 MVC | 更新日期: 2023-09-27 17:50:00

我知道还有另一个关于WebapiConfig.cs和RouteConfig.cs的线索,但我可以保证这是一个不同的问题

当我发现我必须创建一个Web服务(在同一域中(,在那里我可以访问我的一个模型(JSON和XML(时,我的MVC项目已经开发完成了。

为了做到这一点,我右键单击了我的控制器,并选择了"使用实体框架添加Web API 2控制器和操作",还选择了我的模型类和数据库上下文。

模板非常完整,我想我已经准备好进行以下测试了:

namespace MVC4GMAPS.Controllers
{
    public class RestController : ApiController
    {
        private LocationDBContext db = new LocationDBContext();
        // GET api/Rest
        public IQueryable<Location> GetLocations()
        {
            return db.Locations;
        }
etc...

不幸的是,当我尝试访问https://localhost:44300/api/Rest时,我得到了一个404。然而,localhost:44300/Home/Index保持良好的工作状态。

我相信这个问题取决于我的RouteConfig.cs,因为它需要一个{操作},而我的RestController没有任何操作:

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
etc...

我能做什么?我可以同时创建WebapiConfig.cs文件吗?我相信不会。我希望你能帮助我!

在我的MVC项目中创建WebService

您也有WebApiConfig.cs吗?在一个从一开始就是"Web API"的项目中,我有这个:

public static class WebApiConfig
{
  public static void Register(HttpConfiguration config)
  {
    config.MapHttpAttributeRoutes();
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
  }
}

与其他配置一样,这是从Global.asax.cs:调用的

GlobalConfiguration.Configure(WebApiConfig.Register);

这应该使路由指向API控制器。否则,正如您所说,默认情况下,从MVC定义的路由将在一个不存在的名为api的控制器上寻找一个称为Rest的操作。