Web API 在同一项目中的 ASMX 旁边?

Web API beside ASMX in the same project?

我在 asp.net Web 应用程序中使用 asmx.

提供一些 Web 服务

随着时间的推移,我需要在这里提供更多的 Web 服务,我将使用 Web API 而不是传统的 asmx。

问题是,我可以在将要部署在同一 Web 主机上的同一项目中使用这些类型的 Web 服务吗?

这里是解决方案资源管理器:

如您所见,CNIS.asmxWebservise_TCIKH.asmx 很久以前就开始服务了,现在我需要使用 Web API 添加更多的 Web 服务,但是旧的 Web服务应保持正常运行。

我在名为 CNISAPI 的文件夹中添加了一个名为 AirKindController.cs 的新 API 控制器。这是实现:

public class AirKindController : ApiController
{
    CNISDataContext db;
    private AirKindController()
    {
        db = new CNISDataContext();
    }
    // GET api/<controller>
    public IEnumerable<AirKind> Get()
    {
        return db.AirKinds;
    }

但是,当我请求 http://localhost:3031/CNISAPI/api/AirKindhttp://localhost:3031/api/AirKind 时出现 404 错误!我打电话对吗?或者不可能将这两种类型的 Web 服务放在同一个地方?

提前致谢!

编辑:(解决方案)

通过@moarboilerplate 的指导,我在我的项目中添加了一个 Global.asax 并在 Application_Start 方法中添加路由配置,如下所示:

protected void Application_Start(object sender, EventArgs e)
        {            
            GlobalConfiguration.Configure(WebApiConfig.Register);
        }

WebApiConfig.Register 在这里:

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 }
            );
        }
    }

现在我可以通过请求 http://localhost:3031/api/AirKind.

获得 xml 格式的输出

问题已解决!!!

由于这个问题已经在问题本身解决了,所以我决定在答案部分添加答案:

通过@moarboilerplate 的指导,我在我的项目中添加了一个 Global.asax 并在 Application_Start 方法中添加路由配置,如下所示:

protected void Application_Start(object sender, EventArgs e)
        {            
            GlobalConfiguration.Configure(WebApiConfig.Register);
        }

WebApiConfig.Register 在这里:

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 }
            );
        }
    }

现在我可以通过请求 http://localhost:3031/api/AirKind.

获得 xml 格式的输出

特别感谢@moarboilerplate。