我有一个网站,有一个简单的网络服务.我可以通过页面上的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"等等.
我是网络服务的新手,我很困惑.任何帮助,将不胜感激.
取决于你如何添加你的参考:-)
如果通过单击"添加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服务上的所有方法.
渣