ASP.NET WebForm中如何用/GetAirlines调用页面的[WebMethod]?
可以通过
/GetAirlines调用该WebMethod,以下是两种可行方案: 方案一:调整URL重写规则
你之前的重写规则指向了错误的目标文件,需要改成指向包含GetAirlines方法的reissue_ticket.aspx,同时添加请求方法限制(WebMethod默认仅接受POST):
<system.webServer> <rewrite> <rules> <rule name="RewriteToReissueTicket_GetAirlines" stopProcessing="true"> <match url="^GetAirlines$" /> <conditions> <add input="{REQUEST_METHOD}" pattern="POST" /> </conditions> <action type="Rewrite" url="Pages/Services/reissue_ticket.aspx/GetAirlines" /> </rule> </rules> </rewrite> </system.webServer>
配置后,你的AJAX请求只需将url改为"/GetAirlines"即可,保持其他参数不变。
方案二:添加ASP.NET路由映射
既然已经在global.asax中配置了页面路由,也可以直接添加路由映射到WebMethod:
在RegisterRoutes方法中新增:
route.MapPageRoute( "GetAirlinesRoute", "GetAirlines", "~/Pages/Services/reissue_ticket.aspx/GetAirlines" );
完成后,AJAX请求同样可以使用url: "/GetAirlines"调用目标方法。
关于你之前的无效配置
你之前的重写规则没生效,原因有两个:
- 规则指向的
WebServices.asmx并不包含GetAirlines方法,目标路径错误 - 未限制请求方法为POST,WebMethod默认拒绝GET请求
内容的提问来源于stack exchange,提问作者arafat
相关产品推荐
相关产品推荐

