0

私の MVC Web アプリでは、1 つのコントローラー関数 (Validate) がサービスを呼び出します。以下のコードを参照し、MessageHandlerClient が Visual Studio で生成されたサービス プロキシであることを確認してください。サービス プロキシ呼び出し client.ValidateMessage(formdataasbson["HLmessage"].ToString()) は、ローカルの開発環境で正常に動作します。プロジェクトを Azure に発行すると、Validate コントローラー関数の呼び出しが機能しなくなります。プロキシに問題があるのではないかと考え、Validate() を変更して、ハードコーディングされた結果を返し、Azure に再発行しました。すべて正常に動作し、Azure での Web サービス プロキシの動作に問題があることを確認しました。

  [HttpPost]
    public ActionResult Validate(String serializedformdata)
    {
        try
        {
            BsonDocument formdataasbson = this.serializer.JSONFormtoBSON(serializedformdata);    
            MessageHandlerClient client = new MessageHandlerClient();
            this.jsonresponse.ReturnValue = "true";

            StandaloneValidator.My_ServiceReference.Error[] results = client.ValidateMessage(formdataasbson["HLmessage"].ToString());       

            this.jsonresponse.ReturnMessage = results.ToJson();

            return Json(this.jsonresponse);
        }
        catch (Exception ex)
        {
            this.jsonresponse.ReturnValue = "false";
            this.jsonresponse.ReturnMessage = ex.Message;
            return Json(this.jsonresponse);

        }

    }

さらに、ローカルの web.config ファイルに Web サービス プロキシの詳細が次のように表示されます (IP は意図的に隠されています)。

Azure の web.config に関するさまざまな投稿と、それが書き込み可能ではないという事実を読んだので、ローカル ..... プロキシ情報が Azure に公開されていないのではないかと疑っています。実際に web.config がローカルから Azure に発行されない場合、プロキシが機能しない理由がわかりました。質問は...どうすれば直せますか??!

編集: web.config から Azure の csfg ファイルへのいくつかの設定の移行について議論しているさまざまな投稿を目にします - おそらく実行可能な解決策でしょうか? これらの設定の手動読み取りをコーディングしていないことを考えると (単に URL からサービスへのサービス プロキシを作成しただけです)、自動生成されたコードや、移行された設定を読み取る方法がわからないサービスの「内部」動作について心配しています。 csfg.

4

1 に答える 1

1

上記の内容に基づいて、Web ロールと Web サイトを混同しているようです。最初に、これら 2 つの違いを理解して、アプリケーションにどちらを選択するかをより適切に決定できるようにする必要があります。便利なリンクを次に示します。

Windows Azure Web サイトでは、IIS Web サーバーを完全に制御することはできません。そのため、Web サイト固有の設定の一部は構成可能であり、その他の設定は構成可能ではありません。Windows Azure Web サイトでは、web.config に追加されたマシンおよびシステム固有の設定のほとんどが上書きされるため、これらの設定は機能しません。また、Azure Websites インスタンスにも RDP を使用できません。

プロキシ構成が必要な ASP.NET MVC アプリケーションを使用する必要がある場合は、それをWindows Azure Cloud Serviceにデプロイする必要があります。

于 2012-12-28T16:45:00.113 に答える