私は SignalR で MassTransit リクエストとレスポンスを使用しています。Web サイトは、ファイルを作成する Windows サービスに要求を行います。ファイルが作成されると、Windows サービスは応答メッセージを Web サイトに送り返します。Web サイトはファイルを開き、ユーザーが表示できるようにします。ファイルが作成される前にユーザーが Web ページを閉じるシナリオを処理したいと考えています。その場合、作成したファイルをメールで送信したいと思います。
ユーザーが Web ページを閉じたかどうかに関係なく、応答メッセージのメッセージ ハンドラーが実行されます。私ができるようにしたいのは、Web ページが閉じられたことを応答メッセージ ハンドラー内で知る方法があることです。これは私がすでに行ったことです。うまくいきませんが、私の考えを説明しています。私が持っているウェブページで
$(window).unload(function () {
if (event.clientY < 0) {
// $.connection.hub.stop();
$.connection.exportcreate.setIsDisconnected();
}
});
exportcreate は私のハブ名です。setIsDisconnected では、Caller にプロパティを設定しますか? Web ページが閉じられたことを示すプロパティの設定に成功したとします。応答メッセージ ハンドラーでその値を確認するにはどうすればよいですか。これが現在の動作です
protected void BasicResponseHandler(BasicResponse message)
{
string groupName = CorrelationIdGroupName(message.CorrelationId);
GetClients()[groupName].display(message.ExportGuid);
}
private static dynamic GetClients()
{
return AspNetHost.DependencyResolver.Resolve<IConnectionManager>().GetClients<ExportCreateHub>();
}
メッセージ相関 ID をグループとして使用しています。私にとって、メッセージの ExportGuid は非常に重要です。これは、ファイルを識別するために使用されます。したがって、作成したファイルを電子メールで送信する場合は、ExportGuid 値が必要なため、応答ハンドラー内で実行する必要があります。Web ページを閉じるためにハブの Caller に値を保存した場合、応答ハンドラーでどのようにアクセスしますか。
念のため、知っておく必要があります。表示は Web ページで次のように定義されます。
exportCreate.display = function (guid) {
setTimeout(function () {
top.location.href = 'GetExport.ashx?guid=' + guid;
}, 500);
};
GetExport.ashx はファイルを開き、それを応答として返します。
ありがとうございました、
よろしくベン