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

时间:2015-05-28 13:51:33

标签: asp.net web-services soap asmx asp.net-web-api

我使用asmx在asp.net Web应用程序中提供了一些Web服务。

因为它需要在这里提供更多的Web服务,我将使用Web API而不是传统的asmx。

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

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

solution explorer

正如您所看到的,CNIS.asmxWebservise_TCIKH.asmx是很久以前提供的,现在我需要使用Web API添加更多Web服务,但旧的Web服务应保持正常运行。< / p>

我在名为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格式的输出。

问题已解决!!!

1 个答案:

答案 0 :(得分:1)

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

通过@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。