我已完成所有内容,例如:https://msdn.microsoft.com/en-us/library/system.servicemodel.description.icontractbehavior(v=vs.110).aspx
但我的TestContractBehaviorAttribute
方法永远不会被调用:
这是我放置断点的属性:
public class TestContractBehaviorAttribute : Attribute, IContractBehavior
{
public void ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime)
{
}
public void Validate(ContractDescription contractDescription, ServiceEndpoint endpoint)
{
}
public void ApplyClientBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
}
public void AddBindingParameters(ContractDescription contractDescription, ServiceEndpoint endpoint,
BindingParameterCollection bindingParameters)
{
}
}
合同和标有属性的服务:
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
}
[TestContractBehavior]
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
}
执行客户端的调用GetData
但行为属性方法不执行。
答案 0 :(得分:0)
在Visual Studio中创建了一个新的WCF服务项目,并按照您对默认Service1类的概述添加了TestContractBehavior。
在启动/托管服务期间调用IContractBehavior方法。对GetData的调用不会触及任何一个。这些是启动方法。
要调试启动方法,您可以在服务构造函数中添加Debugger.Launch();
,例如。