2

次のプロジェクトでソリューションを作成しました

FrontEnd は mvc4 Web アプリケーションであり、MyWebAPI は mvc4 WebAPI です。

ここに画像の説明を入力

FrontEnd プロジェクトから MyWebAPI コントロール メソッドにアクセスできるようにしたいと考えています。しかし、webAPI url を実行したときにデータが見つからなかったと不平を言うだけなので、機能しません。

フロントエンドが MyWebAPI と通信できるようにするには、さらに何かを行う必要がありますか?

たとえば、この事前に生成された webAPI コントロール メソッドを実行しようとしただけです。

public string Get(int id)
{
    return "value";
}

見つかりませんでした。ただし、スタートアップ プロジェクトを MyWebAPI に変更すると、機能します。私の質問は、FrontEnd プロジェクトから MyWebAPI にアクセスできるようにする方法です。

この質問は実際にはこれと同じですが、同じソリューション内にある場合にフロントエンドから webAPI にアクセスする方法について説明していません

編集

$(document).ready(function() {
            $("#clickMe").click(function() {
                var id = $("#dataBox").val();
                $.ajax({
                    url: "http://localhost:11982/api/Movie/GetMovie",
                    data: { id: id },
                    type: "get",
                    contentType: "application/json;charset=utf-8",
                    success: function(data) {
                        alert(data);
                    },
                    error: function(jqXHR, status, errorThrown) {
//                      alert("Error " + status + "\nError Thrown" + errorThrown + "\n" + jqXHR )

                    }
                })
            })
        })

2012-08-30 更新

ソリューションのさまざまなパッケージを更新しました。その中には、WebAPI ベータ版から WebAPI rc バージョンへの更新が含まれていました。そして、何らかの理由でフォームリクエストまたはajaxリクエストをWebAPIコントローラーのいずれかに送信すると、そのようなコントローラーが見つからなかったというフォームリクエスト応答が返され、ajaxリクエストの場合、応答を返さずに永遠にロードされます.

以前に同様の問題を経験した人はいますか?

以前の解決策は、ローカル IIS サーバーで FrontEnd と MyWebAPI を実行することでした。ただし、すべてのパッケージを更新したため、現在は機能しなくなりました。

4

1 に答える 1

2

問題は、Visual Studio から FrontEnd と MyWebAPI プロジェクトの両方を同時に実行する必要があることです。Visual Studio を構成してこれを行うのは、ソリューションのややあいまいな起動オプションを使用して実際には簡単です。

ソリューション エクスプローラー ペインで、ソリューション ノード(同じ名前のプロジェクト ノードではない)を右クリックします。コンテキスト メニュー項目から、[スタートアップ プロジェクトの設定] を選択します。ダイアログで、[Multiple Startup Project] オプションをクリックし、FrontEnd プロジェクトと MyWebAPI プロジェクトの両方を選択します。[OK] をクリックしてオプションを保存します。デバッガーを実行すると、両方のプロジェクトが起動し、MyWebAPI 呼び出しが FrontEnd に応答するようになります。両方のプロジェクトが異なるポートで実行されていることを確認してください。

アップデート:

Web API RTM に重大な変更がありました。ApiController変更の 1 つは、アクション パラメーターの抽出に使用される規則でした。このSOの質問と回答で新しい属性FromUriFromBodyがどのように使用されているかを見てください

于 2012-06-04T16:12:22.500 に答える