如何将 .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

如何在 ASP .Net (Aspx) 中创建要从 Javascript 访问的 Web 服务方法?

asp.net c#向html内传值问题,高手请来

如何将其他页面包含到 aspx 文件中