Vì vậy, tôi đã tạo WCF khách hàng/máy chủ. Những gì tôi muốn là khi tôi gửi tin nhắn đến máy chủ từ máy khách này và cắt kết nối vì bất kỳ lý do nào, khách hàng tắt ví dụ, làm thế nào khách hàng này có thể nhận được phản hồi khi nó sẵn sàng một lần nữa?Cách nhận phản hồi từ máy chủ trong tin nhắn đáng tin cậy WCF sau khi cắt kết nối
Có thể đặt phiên hoặc thứ gì đó giữa máy khách và máy chủ không?
mã khách hàng của tôi là:
private static void Main(string[] args)
{
var client = new FlipCaseServiceClient("ReliableMessageService");
var sd = new StringData { FirstName = "Turgut", LastName = "Kançeltik" };
var fullName = client.GetFullName(ref sd);
Console.WriteLine(fullName);
}
mã máy chủ của tôi là:
[DeliveryRequirements(RequireOrderedDelivery = true)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Single)]
public class FlipCaseService : IFlipCaseService
{
public string GetFullName(ref StringData stringData)
{
var fullName = $"{stringData.FirstName} {stringData.LastName}";
stringData.FullName = fullName;
return fullName;
}
}
Và máy chủ cấu hình trong tóm tắt:
<service behaviorConfiguration="ServiceBehaviorMetaData" name="FlipCaseService.FlipCaseService" >
<endpoint name="ReliableMessageService" address="flipcase/wsAddress" binding="wsHttpBinding" bindingConfiguration="BindingReliableMessaging" contract="FlipCaseService.IFlipCaseService" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
<bindings>
<wsHttpBinding>
<binding name="BindingReliableMessaging">
<reliableSession enabled="true" inactivityTimeout="00:10:00"/>
</binding>
</wsHttpBinding>
</bindings>
<behavior name="ServiceBehaviorMetaData">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/flipcase/metadata" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
Bạn không thể thử gọi lại không thành công? – Evk
Tôi không muốn tiến hành điều tương tự nữa trên Máy chủ. –
Dịch vụ WCF là không trạng thái theo mặc định và đây là bản chất của dịch vụ, nhưng bạn có thể sử dụng trạng thái. Dù sao, trong kịch bản của bạn, tôi nghĩ rằng bạn có thể giải quyết bộ nhớ đệm kết quả cho cuộc gọi tiếp theo, tránh xử lý lại. –