Web API 在同一项目中的 ASMX 旁边?
Web API beside ASMX in the same project?
我在 asp.net Web 应用程序中使用 asmx
.
提供一些 Web 服务
随着时间的推移,我需要在这里提供更多的 Web 服务,我将使用 Web API 而不是传统的 asmx。
问题是,我可以在将要部署在同一 Web 主机上的同一项目中使用这些类型的 Web 服务吗?
这里是解决方案资源管理器:
如您所见,CNIS.asmx
和 Webservise_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/AirKind
或 http://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。
我在 asp.net Web 应用程序中使用 asmx
.
随着时间的推移,我需要在这里提供更多的 Web 服务,我将使用 Web API 而不是传统的 asmx。
问题是,我可以在将要部署在同一 Web 主机上的同一项目中使用这些类型的 Web 服务吗?
这里是解决方案资源管理器:
如您所见,CNIS.asmx
和 Webservise_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/AirKind
或 http://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
.
问题已解决!!!
由于这个问题已经在问题本身解决了,所以我决定在答案部分添加答案:
通过@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
.
特别感谢@moarboilerplate。