【发布时间】:2015-04-04 01:48:46
【问题描述】:
我正在尝试将 Web Api 功能添加到现有的 ASP.NET 应用程序。这应该很简单,但我已经坚持了几个小时。我已经尝试了很多东西,但到目前为止都没有运气。
该应用在“/api”文件夹中有多个 asmx 服务。这以某种方式干扰了 web api 路由。理想情况下,我希望将现有服务保留在当前位置,因为存在对它们的外部引用。
样品服务: /Api/ApiServ.asmx - 我可以使用方法列表调用初始屏幕
问题是当我尝试在其中一项服务上调用任何方法时,例如/Api/ApiServ.asmx/ServMethod - 我无法调用它,我收到以下响应:“未找到与请求 URI 'http://localhost:49415/api/apiserv.asmx/ServMethod'匹配的 HTTP 资源”
这是我所拥有的: Global.asax:
public class WebApiApplication : HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
//RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
示例服务:
namespace WebApiTest.Api
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]
public class ApiServ : WebService
{
[WebMethod]
public string ServMethod()
{
return "Test";
}
}
}
Web API 配置:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.IgnoreRoute("asmx", "api/{resource}.asmx/{*pathInfo}");
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
奇怪的是,当我使用路由调试器时,它实际上匹配 asmx 忽略路由,但服务方法没有被命中。任何帮助表示赞赏!
【问题讨论】:
标签: c# asp.net web-services asp.net-web-api