-1

ASP.NET MVC3プロジェクトに取り組んでおり、Ajaxjqueryを使用してコントローラーと通信しています。データベース(SQL Azure)を更新する前に、asp.netキャッシュを使用して結果を保存します。

        function SaveCustomersList() {

        $.ajax({
            type: "POST",
            url: '/Customers/SaveCustomersList/',
            data: "",
            cache: false,
            dataType: "text",
            success: function (data) {

                return true;
            }
        });
    }

アプリケーションは正常に動作しますが、すべてのユーザーが利用できるわけではありません。

一部のユーザーがデータベースを更新しようとすると、DALオブジェクトに渡されるコンテンツがnullになります。

これは、ネットワークで作業しているユーザーで発生しているだけです。

それについての説明はありません。

ご協力いただきありがとうございます。

4

2 に答える 2

0

あなたがする必要があるのは、複数のインスタンス間でデータをキャッシュできるようにする分散キャッシュを設定することです。これにはAzureCachingを使用できます(ただし、コストがかかります)。

キャッシュの設定は非常に簡単です。次のガイドに従ってください:https ://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/

于 2012-06-04T19:33:27.357 に答える
0

適切なヘルプを得るために答える必要がある質問のリストは次のとおりです。

  1. アプリケーションのインスタンスはいくつ実行されていますか?
  2. このアプリケーションが実行されている場所とローカルネットワークまたは外部でホストされている場所
  3. 「ネットワーク上で作業しているユーザー」とはどういう意味ですか?これは、このアプリケーションがネットワーク内またはネットワーク外のユーザーにアクセス可能であることを意味しますか?
  4. このアプリケーションがネットワークで実行されていて、Ajax呼び出しとコントローラー間の通信がプロキシを通過している場合にのみ、プロキシが要因になる可能性があります。

InProcキャッシュを使用しているため、問題このアプリケーションのインスタンスが複数あるかどうかを知ることが重要です。Ajaxとコントローラー間の通信はインスタンス固有であり、それを処理するローカルキャッシュがある場合は、1つのインスタンスでのみ機能することを理解する必要があります。ただし、同じアプリケーションの複数のインスタンスがあり、インスタンス#1によって提供される接続Xが常にインスタンス#1によってサーバーになるという保証がないため、ローカルキャッシュの使用は正しく機能しません。

複数のインスタンスでアプリケーションを実行することにした場合は、分散キャッシュ(つまり、インスタンスの外部)を使用することが、内部(つまり、インスタンスASP.NET inprocの内部)キャッシュと比較して唯一の選択肢です。

[追加]WindowsAzureキャッシュを使用するための.netサンプルアプリケーションは次のとおりです: https ://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/

MemCacheを使用する場合は、以下に説明するように@smarxソリューションを使用できます。http: //blog.smarx.com/posts/memcached-in-windows-azure

于 2012-06-04T16:05:08.090 に答える