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

3 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";
    }
Run Code Online (Sandbox Code Playgroud)

我的javascript工作原理:

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

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

        function failureCB(result) {
            alert("Failed");
        }
Run Code Online (Sandbox Code Playgroud)

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

我是网络服务的新手,我很困惑.任何帮助,将不胜感激.

mar*_*c_s 5

取决于你如何添加你的参考:-)

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

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

MySVC.MyTestService svc = new MySVC.MyTestService();
string message = svc.HelloWorld();
Run Code Online (Sandbox Code Playgroud)

从而检索HelloWorld方法的输出.

另一方面,如果您单击"添加服务引用"(这相同 - 这将向您的Web服务添加WCF客户端代理),那么您将获得这些请求和响应对象类.你应该得到一个xxxxClient类,这就是你将要使用的:

MyWCFService.MyTestServiceSoapClient client = 
     new MyWCFService.MyTestServiceSoapClient();
string message = client.HelloWorld()
Run Code Online (Sandbox Code Playgroud)

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