如何在同一个网站上呼叫网络服务?

时间:2010-01-11 16:15:43

标签: c# asp.net web-services

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

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

我是否必须使用“添加Web引用”或者是否有其他方式,因为Web服务位于同一网站中?

Visual Studio 2005,C#

谢谢,

爱德华

3 个答案:

答案 0 :(得分:2)

我用Andy Rose在评论中写道的方式:

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

答案 1 :(得分:0)

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

另一个想法是使用ctrl-f5启动它,以便不启动调试器,然后添加对localhost的引用:/。asmx

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

答案 2 :(得分:0)

Webreference本身只是一个代理实现,因此VS可以假装它知道你的web服务如何对它的调用作出反应(所以你可以编译),你实际上可以在没有它们的情况下进行编码(虽然它更难:))。

如果你想这样做,你可以考虑一些选择:

  1. 将您的Web服务创建为单独的项目,但将其部署到同一位置。您将在bin目录中获得混合二进制文件,但否则它应该可以正常工作。通过这种方式,您可以根据需要单独部署每个。
  2. 考虑将它们分成两个单独的应用程序。无论出于何种原因,这可能无法使用。
  3. 在主项目中创建一个存根Web服务,它只包含函数定义(返回类型和参数)并进行部署,然后根据该服务生成您的Web服务。然后,您可以根据原型开始开发并在必要时填写
  4. 克里斯建议做两步洗牌。首先创建Web服务的近似表示,然后进行部署。其次,创建代理,创建您的Web应用程序,部署和测试。根据需要重复。
  5. 创建代理后,您可以更改代理绑定中指向的URL。