我需要一些关于api路由的帮助。有我的代码:
WebApiConfig.cs;
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}/{no}",
defaults: new { id = RouteParameter.Optional, no = RouteParameter.Optional }
);
}
RouteConfig.cs;
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 }
);
routes.MapRoute(
name:"UserControl",
url:"{controller}/"
);
}
的Global.asax.cs;
GlobalConfiguration.Configure(WebApiConfig.Register);
这是我的api;
public object GetParselNo(int id, int no)
{
List<TapuParselModel> parselList = TapuModule.GetParselListFromMahalleAndAdaTapuKod(id, no.ToString());
List<string> parselNoList = parselList.Select(x => x.ParselNo).ToList<string>();
parselNoList = parselNoList.OrderBy(x => x, new AlphanumComparator()).ToList();
var jsonResult = SConvert.SerializeJSON(parselNoList);
return jsonResult;
}
现在它的工作方式如下。但是api url是; http://localhost:55591/Api/TapuParselApi/GetParselNo/146436/80
我想看到网址; http://localhost:55591/Api/TapuParselApi/GetParselNo/的 MahalleId / 146436 /的 AdaNo / 80
表示MahalleId = 146436,AdaNo = 80。我在ApiController上试过了route属性。但这次Global.asax.cs有异常。然后尝试删除Global.asax.cs中的行;这次api无法正常工作。我该怎么办??谁知道?感谢...
答案 0 :(得分:0)
如果使用web api 2,那么属性路由使这很容易。
[Route("Api/TapuParselApi/GetParselNo/MahalleId/{id}/AdaNo/{no}")]
public object GetParselNo(int id, int no) { ... }
如果没有,您可以在默认路由之前将此路由添加到您的web api路由配置中:
config.Routes.MapHttpRoute(
name: "GetParselNo",
routeTemplate: "api/TapuParselApi/GetParselNo/MahalleId/{id}/AdaNo/{no}",
defaults: new { id = RouteParameter.Optional, no = RouteParameter.Optional }
);
答案 1 :(得分:0)
我在搜索时也找到了方便的方式。我希望与所有人分享这种方式;
这很简单。只需添加您的Web.config
即可<handlers>
**<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />**
</handlers>
所以你不需要改变你的wep api路线......谢谢大家...它解决了..