मुझे एक होस्ट/क्लाइंट डब्ल्यूसीएफ सेवा और क्लाइंट मिला है जो netTcp बाइंडिंग और कॉलबैक विधि का उपयोग कर रहा है।डब्ल्यूसीएफ, डुप्लेक्स कॉलबैक, रिसीवटाइमआउट नेट टीसीपी बाइंडिंग
<bindings>
<netTcpBinding>
<binding name="tcp_Unsecured" receiveTimeout="00:01:00" sendTimeout="00:01:00">
<security mode="None" />
<reliableSession enabled="true" ordered="true" inactivityTimeout="00:10:00"/>
</binding>
</netTcpBinding>
</bindings>
प्रॉक्सी कॉलबैक साथ
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(Namespace="http://dotnetaddict.dotnetdevelopersjournal.com/wcf.samples", ConfigurationName="AlarmServer", CallbackContract=typeof(AlarmServerCallback), SessionMode=System.ServiceModel.SessionMode.Required)]
public interface AlarmServer
{
[System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://dotnetaddict.dotnetdevelopersjournal.com/wcf.samples/AlarmServer/RegisterAlarm")]
void RegisterAlarm(System.DateTime alarmTime, string clientName, string reminderMessage);
[System.ServiceModel.OperationContractAttribute(IsOneWay = true, Action = "http://dotnetaddict.dotnetdevelopersjournal.com/wcf.samples/AlarmServer/unRegisterAlarm")]
void unRegisterAlarm(string clientName);
[System.ServiceModel.OperationContractAttribute(IsOneWay = true, Action = "http://dotnetaddict.dotnetdevelopersjournal.com/wcf.samples/AlarmServer/broadcastMessage")]
void broadcastMessage(string msg);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
public interface AlarmServerCallback
{
[System.ServiceModel.OperationContractAttribute(IsOneWay=true, Action="http://dotnetaddict.dotnetdevelopersjournal.com/wcf.samples/AlarmServer/SignalAlarm")]
void SignalAlarm(string reminderMessage);
[System.ServiceModel.OperationContractAttribute(IsOneWay = true, Action = "http://dotnetaddict.dotnetdevelopersjournal.com/wcf.samples/AlarmServer/displayMessage")]
void displayMessage(string msg);
}
ग्राहक उदाहरण
public MainForm()
{
InitializeComponent();
InstanceContext context = new InstanceContext(new AlarmCallback());
client = new AlarmServerClient(context);
}
समस्या मेरे पास है बाध्यकारी recieveTimeout से चलाता है के बाद, ग्राहक एक गलती राज्य में चला जाता है और सुनने ग्राहकों बंद कर देता है वापस कॉल करें।
मैं sysinternals से TCPVIEW का उपयोग कर सुनना बंदरगाह ड्रॉप देख सकता हूं।
यदि मैं चैनल व्यस्त रहता हूं, तो टाइम आउट ट्रिगर नहीं होता है, इसलिए यह सर्वर/क्लाइंट को डब्ल्यूसीएफ संदेश में कोई गलती नहीं है, क्योंकि एकाधिक संदेश ठीक से बहते हैं।
मैंने सोचा था कि प्राप्त टाइमटाइम को यह पता लगाने के लिए डिज़ाइन किया गया था कि टीसीपी पर डब्ल्यूसीएफ संदेश से कोई जवाब असफल रहा है या नहीं? यह कनेक्शन को क्यों दोष दे रहा है। यह लगभग प्रतीत होता है कि यदि टाइमआउट अवधि के लिए कोई कॉलबैक ऑब्जेक्ट नहीं बनाया गया है, तो चैनल बंद कर दिया जाता है?
मैं क्या गलत कर रहा हूं?
क्या आपको इसका कोई समाधान मिला है? –