我试图创建一个 Web 服务,该服务在其构造函数中采用一些参数来保存往返行程,但我不断收到错误消息: CS1729 “servicename”不包含采用“1”个参数的构造函数
尽管当我尝试在本地(与服务在同一个项目中)创建即时信息时,一切正常......有什么好处?
网络服务:
public class ayyash : System.Web.Services.WebService {
private string _myname;
public ayyash (string myname) {
_myname = myname;
//Uncomment the following line if using designed components
//InitializeComponent();
}
}
消费:
ayyash a = new ayyash("my name is ayyash");
输出:
Compiler Error Message: CS1729: 'ayyash' does not contain a constructor that takes '1' arguments
最佳答案
当您实例化您的客户端代理时,不会调用服务器端构造函数。它在创建服务器端对象时被调用;也就是说,是否以及何时调用 Web 服务方法。
同样没有值(value)的是您不能在 Web 服务上拥有实例成员。您不能在构造函数中接受“名称”并在其他方法中使用它;您必须将“名称”作为参数发送到每个 Web 服务方法中。简而言之,Web 服务“状态”必须通过方法参数或 cookie 传递给服务(尽管如果您迁移到 WCF,使用后者会给您带来问题)。
想象一下,每次您在代理对象上调用一个方法时,都会创建一个新的服务器端对象,并且在该对象被销毁之前调用该方法。这并不完全正确(对象可以被池化),但它会帮助您设计您的 Web 服务。
关于c# - Webservice C# 构造函数不允许参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1320207/