【问题标题】:How to call a webservice in the same website?如何在同一个网站调用一个网络服务?
【发布时间】:2010-01-11 16:15:42
【问题描述】:

我必须调用在调用者 aspx 所在的同一网站上发布的 Web 服务。

当我尝试“添加 Web 引用”时,编辑器不会显示生成的命名空间中的 Web 服务方法。

我必须使用“添加 Web 引用”还是因为 web 服务在同一个网站中而有其他方法?

Visual Studio 2005,C#

谢谢,

爱德华多

【问题讨论】:

  • 出于兴趣,您为什么要这样做?你能不能只公开 Web 服务在内部使用的方法并直接调用它们?
  • 你是对的。无需使用参考。你的评论就是我的答案。谢谢。

标签: c# asp.net web-services


【解决方案1】:

我使用了安迪·罗斯在 cmets 中写的方式:

实例化webservice类并直接调用方法,因为它可以在项目内部访问(无需添加web引用)。

【讨论】:

    【解决方案2】:

    有一些方法可以欺骗它...您可以使用 Web 服务部署应用程序,然后添加对已部署位置的引用。

    另一个想法是使用 ctrl-f5 启动它,这样就不会启动调试器,然后添加对 localhost:/.asmx 的引用

    这将获取在您的 web.config 中创建的所有配置信息,当然,您可以在以后根据需要进行修改。

    【讨论】:

    • 但是我看不到 web 服务中的方法。声明是: [WebMethod] public bool MyMethod() 但是当我写 webref_namespace.webservice MyMethod 不存在。
    【解决方案3】:

    Webreference 本身只是一个代理实现,因此 VS 可以假装它知道您的 web 服务将如何响应对其的调用(因此您可以编译),您实际上可以在没有它们的情况下进行编码(尽管这要困难得多:))。

    如果你想这样做,我可以想到几个选项:

    1. 将您的 Web 服务创建为一个单独的项目,但将其部署到同一位置。您将在 bin 目录中获得混合的二进制文件,否则它应该可以正常工作。通过这种方式,您可以根据需要单独部署每个。
    2. 考虑将它们分开成两个单独的应用程序。无论出于何种原因,这都可能不可用。
    3. 在您的主项目中创建一个存根 web 服务,它只有函数定义(返回类型和参数)并部署它,然后根据它生成您的 web 服务。然后,您可以根据原型开始开发并根据需要填写它
    4. 按照 Chris 的建议进行两步随机播放。首先创建您的 Web 服务的近似表示,然后部署它。其次针对它创建您的代理,创建您的 Web 应用程序,部署它并进行测试。根据需要重复。

    创建代理后,您可以更改它在代理绑定中指向的 URL。

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 2013-07-16
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      • 2020-02-21
      • 2011-10-25
      相关资源
      最近更新 更多