我有一个网站,它有一个简单的网络服务。我可以通过页面上的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“等等。
我是网络服务新手,非常困惑。任何帮助将不胜感激。
答案 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服务上的所有方法。
马克