问题描述
|
我已编写此代码:
接口:
public interface IService1
{
[OperationContract]
string Welcome(string fullName);
[OperationContract]
string Goodbye();
[OperationContract]
string GetSessionID();
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
}
服务:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
public class Service1 : IService1
{
private string UserFullName { get; set; }
public string GetSessionID()
{
var sessionId = OperationContext.Current.SessionId;
return sessionId.ToString();
}
public string Welcome(string fullName)
{
UserFullName = fullName ?? \"Guest\"; return string.Format(\"Welcome back,{0}!\",UserFullName);
}
public string Goodbye()
{
return string.Format(\"Come back soon,UserFullName ?? \"Guest\");
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException(\"composite\");
}
if (composite.BoolValue)
{
composite.StringValue += \"Suffix\";
}
return composite;
}
}
webconfig:
为什么UserFullName始终为null?
解决方法
将InstanceContextMode.PerCall更改为PerSession。
在您的示例中,每次调用都会创建一个服务实例。