如何将 .aspx 页面中的 ASP.NET Web 方法转换为 RESTful API?
Posted
技术标签:
【中文标题】如何将 .aspx 页面中的 ASP.NET Web 方法转换为 RESTful API?【英文标题】:How do I convert an ASP.NET web method in .aspx page to a restful API? 【发布时间】:2022-01-16 05:46:23 【问题描述】:亲爱的 这是第一次在这里发帖,希望能从您在应用程序开发方面的经验中受益。
如题中所述,我在.ASPX页面后面写了C# web-method,我以前通过ajax前端代码调用它,它工作正常。
我需要将此 Web 方法转换为我可以通过邮递员测试的 Restful API。 这是我的网络方法:
[WebMethod]
public static string check (string order)
if (some conditions)
return "false";
else
return "true";
【问题讨论】:
您应该能够从邮递员那里调用该方法,例如url: '/MyPage.aspx/check'
。你试过了吗?
当我尝试使用您提到的方式调用该方法时,我收到一个错误 Exceeded maxRedirects 因为如果空重定向到登录页面,我在页面加载中使用 session["user"] 并且我无法绕过从外部工具或项目(如邮递员)调用 Web 方法时的页面加载功能。
好的,所以你的问题变成了一个完全不同的问题。这可能会帮助你***.com/questions/25083731/…
另外,调用应该用于登录用户的 API 方法听起来不太好。我建议您考虑将该网络方法移至其他位置。
我的问题不是如何在 web 方法中访问会话,问题是我无法通过 URL 或邮递员调用 web 方法,我认为它与页面加载有关,因为它使用会话
【参考方案1】:
所有网络方法都支持soap/xml和开箱即用的REST格式。
所以,你不必做任何事情。
您可以放置/传递您拥有的 URL 和参数。
所以,例如,你有这个:
public static string check (string order)
那么,你可以使用soap,甚至jQuery.POST吗?你发现上面的url现在也是有效的
例如:
www.mywebsite/mywebpage.aspx/check&?order=134
因此,URL 和 rest 调用应该可以正常工作 - 作为一般规则,您根本不需要做任何事情。
编辑:
好的,对于一个 aspx 页面和 web 方法,我似乎无法让它工作 - (所以,我曾认为一个 aspx 和一个 asmx 页面都可以工作。这确实适用于 asmx (网络服务页面)。但是,请尝试将其添加到网络配置中:
<system.web>
--- in above node, as child note this
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
【讨论】:
感谢您的快速支持。问题是,当我尝试使用您提到的方式调用该方法时,出现错误 Exceeded maxRedirects 因为如果空重定向到登录页面,我在页面加载中使用 session["user"] 并且我无法绕过页面加载功能从外部工具或项目(如邮递员)调用 Web 方法。 页面加载,甚至调用web方法时该网页上的所有控件都无法使用。它们就像一个 ajax 调用 - 不使用网页类实例,并且您不能使用视图状态,该 Web 方法也不能使用该页面上的任何控件。该页面上的代码也不存在任何范围变量。只有那个 ONE 例程存在于该上下文中,而不是页面回发,而不是页面类对象和值。您可以使用会话,但页面加载根本不应该触发。这就是为什么您必须为该 Web 方法的范围添加“静态” - 它在调用时是一个独立的例程。 我不明白为什么邮递员根本不能工作——它应该 我在邮递员中收到此错误 错误:超过 maxRedirects。可能陷入重定向循环localhost/infor/startpack.aspx/endpack.aspx 查看我的编辑 - 我的建议对于 asmx 页面可以正常工作,但对于 aspx 页面,它可以工作,但您仍然需要添加正确的标题以上是关于如何将 .aspx 页面中的 ASP.NET Web 方法转换为 RESTful API?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 NicEdit 富文本编辑器与 asp.net C# (.aspx) 页面集成
如何在 asp.net mvc 3 项目中路由 .aspx 页面?
用 JQuery 替换 ASP.NET 中的 aspx 页面中引用的 MicrosoftAjax.js