【问题标题】:How to call a local webservice in a .aspx page?如何在 .aspx 页面中调用本地 Web 服务?
【发布时间】:2017-10-01 18:09:13
【问题描述】:

如何在普通的 .aspx 页面上提供 Web 服务?

我有一个本地项目,我可以通过 ajax 调用调用本地 .asmx webservices。它工作完美。但是我无法在后面的代码中的同一页面上创建 Web 服务。例如,如果我想调用位于customers.aspx 中的代码隐藏中的HelloWorld() web 服务。

【问题讨论】:

    标签: c# asp.net web-services


    【解决方案1】:

    将您的方法声明为静态并使用 [WebMethod] 属性对其进行装饰。 示例 -

    [WebMethod()]
    public static string GetData(string param)
    {   
    // your code goes here
    }
    

    这样,您将能够通过 AJAX 调用使用 POST 请求来调用您的方法 -

    yourpage.aspx/GetData
    

    但是,如果您想使用 GET,请使用 ScriptMethod 标签进一步装饰它并提供有关请求类型的详细信息。

    [WebMethod()]
    [ScriptMethod(UseHttpGet=true)]
    public static string GetData(string param)
    {   
    // your code goes here
    }
    

    【讨论】:

    • 谢谢。我已经做到了。但事实并非如此。真正困扰我的是,我之前能够从前端调用 web 服务到代码隐藏(例如 customer.aspx 到 customer.aspx.cs 中的 web 服务)。但对于某些人来说,它现在没有反应。
    • 您看到了什么错误?请更新您的问题并提供更多详细信息,以便我或某人为您提供帮助。
    • 没有错误。不是来自前端,也不是来自后端。如果我在我的 flow.aspx 中的 ajax 调用中调用这个 url:“flow.aspx/HelloWorld”,什么也不会发生。但是当我将代码更改为 url 时:“MyWebService.asmx/HelloWorld,然后一切正常。我试图跟踪代码隐藏中的调用,我可以看到,flow.aspx 中的代码隐藏 web 服务甚至没有被调用。
    • 而且MyWebService和flow.aspx中的HelloWorld代码是一样的。 [WebMethod] public static string HelloWorld() { return "Hello World"; }
    • 您是否使用 POST 调用来使用 aspx 调用您的服务?使用开发人员工具检查对您的 ajax 调用的响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多