我似乎无法从C#Forms应用程序调用我的Web服务

时间:2009-07-17 21:44:41

标签: c# forms service reference

我有一个网站,它有一个简单的网络服务。我可以通过页面上的javascript成功调用Web服务。我需要能够从C#表单应用程序调用相同的Web服务。 Web服务代码非常简单:

[WebService(Namespace = "http://myurl.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class IDCService : System.Web.Services.WebService {

    public IDCService () {
    }

    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }

我的javascript有效:

        function HelloWorld() {
            var yourName = $get('txtYourName').value;
            alert(yourName);
            IDCService.HelloWorld(HelloWorldCalback, failureCB);
        }

        function HelloWorldCalback(result) {
            alert(result);
        }

        function failureCB(result) {
            alert("Failed");
        }

但是,当我尝试在我的C#代码中设置对WS的引用时,我期望看到的是一个带有方法“HelloWorld”的对象,我实际上看到的是一个具有“HelloWorldRequest”等属性的对象, HelloWorldResponse“,”HelloWorldRequestBody“等等。

我是网络服务新手,非常困惑。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:5)

取决于您添加参考的方式: - )

如果您通过单击“添加Web引用”添加它,则指定了服务的位置,并为其指定了命名空间 - 假设它将被称为“MySVC”。

在这种情况下,您应该可以在Winforms程序中执行此操作:

MySVC.MyTestService svc = new MySVC.MyTestService();
string message = svc.HelloWorld();

因此检索HelloWorld方法的输出。

另一方面,如果您单击“添加服务引用”(相同 - 这将为您的Web服务添加WCF客户端代理),那么您将获得那些请求和响应对象类。您应获取xxxxClient类,这就是您将使用的内容:

MyWCFService.MyTestServiceSoapClient client = 
     new MyWCFService.MyTestServiceSoapClient();
string message = client.HelloWorld()

这样,您也应该能够访问Web服务上的所有方法。

马克