我有一个具有简单网络服务的网站。我可以从页面上的 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"等等。
我是网络服务的新手,很困惑。任何帮助将不胜感激。
最佳答案
取决于您添加引用的方式:-)
如果您通过单击“添加 Web 引用”来添加它,则您指定了服务的位置,并为它提供了一个 namespace - 假设它将被称为“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()
这样,您也应该能够访问网络服务上的所有方法。
马克
关于c# - 我似乎无法从 C# Forms 应用程序调用我的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145836/