2010-01-11 63 views
3

我必须调用在同一个网站上发布的调用者aspx的web服务。如何在同一网站中调用Web服务?

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

我必须使用“添加Web引用”还是有另一种方式,因为web服务在同一个网站?

的Visual Studio 2005,C#

感谢,

爱德华

+3

出于兴趣你为什么要这样做?你能否不公开Web服务在内部使用的方法并直接调用它们? – 2010-01-11 16:30:37

+1

你说得对。 无需使用参考。 您的评论是我的回答。 谢谢。 – EduXavier 2010-01-11 16:42:13

回答

2

我用的方式,安迪·罗斯在评论中写道:

实例化的web服务类,并直接调用方法,因为它是项目(无需添加Web引用)内访问。

0

有办法欺骗它...您可以部署与Web服务应用程序,然后添加引用部署的位置。

另一个想法是,通过使用Ctrl-F5,从而无法正常启动调试器为好,然后添加到您的本地主机的引用刚开始它:/ ASMX

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

+0

但我看不到webservice中的方法。该声明是: [的WebMethod] 公共BOOL的MyMethod() 但是,当我写webref_namespace.webservice的MyMethod是不存在的。 – EduXavier 2010-01-11 16:33:41

0

的Web引用本身只是一个代理实现,以便VS可以假装它知道你的web服务将如何调用它(所以你可以编译),你其实可以没有他们的代码(虽然它是更难:))反应。

您有几种选择,我能想到的,如果你想这样做:

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

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