2011-08-19 82 views

回答

0

您可以从Web服务“暴露”的唯一东西是[WebMethod]


你可以使用代码访问Web服务这样的:

Dim svc as New WebReference.MyWebService() 
Dim result As Integer = svc.GetSomeInteger() 
svc.SetSomeInteger(result) 
Dim result2 As Integer = svc.GetSomeInteger() 

你可能会认为你已经创建的Web服务类的一个实例。你还没有。您只在VB.NET代码中创建了代理类的实例。在上面的代码中,每个对Web服务的调用都通过相同的客户端代理实例,但会转到服务器端Web服务类的不同实例。

即使Web服务具有属性或字段,因为每次调用都会有不同的Web服务实例,所以每次都会有不同的“SomeInteger”版本。

0

Web服务是基于方法的,所以它们不用于访问属性。

但没有理由不能让GetX/SetX方法像常规服务方法一样暴露 - 只要确保包含[WebMethod]属性。

+0

谢谢乔。如果我使用函数,则不会保留变量/属性的状态。例如:Webservice有一个变量a = 5。我有一个'设置'功能,将值设置为10.现在在我的下一行客户端代码中,如果我访问a,它的原始值为5. – Praneeth

+0

据我所知,您不能在活动后重新使用服务本身的实例第一个电话会发生。我唯一能想到的就是做一些有趣的事情,比如在你的服务类中保留一个静态字典,并让这些实例保持活跃状态​​。然后,您需要将该实例的唯一密钥传回给客户端,并让客户端将其传回给每个未来的请求,然后该服务将检索特定实例并从中激发请求,而不是激活的实例。 –

0

正如其他人所建议的,您将需要使用get/set方法而不是属性。

至于从JavaScript访问Web服务,只需在URL中指定方法名称并执行XmlHttpRequest。