1

私の Web.API プロジェクトでは、Web 設定での開発のためhttp://localhost/reporterに、ローカル IIS Web サーバーの「Project Url:」を使用します。「api/getdata/」などの URL に投稿する JavaScript 呼び出しを含む asp.net mvc4 を使用して、このサイトから提供されるページがあります。

何らかの理由で、これらは機能しなくなりました。たとえば、「api/getdata」に jQuery を投稿すると、完全な URLhttp://localhost/reporter/api/getdataが正しいものでした。そして人生は良かった。

しかし、今何かが変わった - 同じ jQuery の投稿、私が認識しているコードの違いは他に何もないが、私の完全な URL は今http://localhost/api/getdata- 私はその「レポーター」の部分を失った。これを別の内部サーバーに展開したときに何かが起こった可能性があると思います-ローカルではうまく機能しました-その後、展開して新しいサーバーで動作しないことに気付きました. そして、私はもう地元で働いていないことに気づきました。

再確認したところ、プロジェクトの構成は以前と同じようです...?

何かを壊したことは確かですが、何が原因かわかりません。考え?

4

1 に答える 1

1

まず、Fiddler などのツールや Web ブラウザーの開発ツールを使用してネットワーク トレースを行い、失敗した要求を確認することをお勧めします。

最も可能性の高い原因は、仮想ディレクトリが異なるか、おそらくブラウザーの URL が異なるため、相対パスが正しく解決されないことです。クライアントは多くの場合、URL がであるかを知らないため、相対パスをクライアントで使用するのは一般的に非常に悪いことです。

次のようなクライアント側のコードを少しだけ追加することをお勧めします。

<script>
    var baseUrl = '@Url.Content("~/")';
</script>

これにより、アプリの「ルート」を含む JavaScript 変数が宣言されます。次に、ページの他の場所に、ベース URL を使用し、残りの相対パスを追加するコードを含めることができます。

<script>
    $.ajax(...., baseUrl + "api/getdata", ...);
</script>
于 2013-02-28T17:14:04.013 に答える