21

ASP.NET MVC 4 Web サイトに取り組んでいます。MVC コントローラーと共に、ajax GET API インターフェイスを含む 1 つの API コントローラーがあります。Visual Studio を使用してローカルでデバッグすると、完全に機能します。

しかし、Azure Web サイトとしてデプロイした後、MVC コントローラーは機能しますが、API コントローラーは機能しなくなりました。jQuery コードがアクセスしようとすると、次のような応答が返されます。

要求 URI ' http://example.com 'に一致する HTTP リソースが見つかりませんでした。

少なくともルートは機能しているようです (そうでない場合は、別の 404 応答本文が返されます)。

さらに、別の純粋な MVC 4 Web API サービスを Azure クラウド サービスとしてデプロイしています。それは完全に機能します。では、MVC Web サイト内の API が失敗する原因は何でしょうか? ありがとうございました!

4

4 に答える 4

2

これは一般的な問題です。MVC アプリケーションが IIS にデプロイされると、Web API によって公開された REST サービスを呼び出している HTTP URL が変更されます。API コントローラーの名前が MyApiController の場合、本番環境では、呼び出し URL の前にアプリケーション名を追加する必要があります。つまり、/api/MyApi は /MyApp/api/MyApi になります。MyApp は、Web サイトのプレフィックスです (yourwebsite/MyApp)。

于 2014-03-24T21:34:02.717 に答える
1

彼らが通常役立つこれらのことを確認してください:

  1. コントローラタイプがパブリックであり、ApiControllerから派生していることを確認してください
  2. コントローラの名前が「xxxxController」であることを確認してください。ここで、xxxxはコントローラ名です。

その場合、URL api/xxxxが機能するはずです。

于 2012-11-17T03:15:20.683 に答える
1

問題を解決しました。私は ORM として Telerik DataAccess を使用しており、プロジェクトはTrueCopy Localにする必要があります。

同様に、すべての参照をCopy Local=Trueとして追加します。それらがサード パーティの dll または nuget からのものであると思われる場合。

<customErrors mode="Off" />Web.config<system.web>ファイルに を追加すると、エラーをより簡単に見つけることができます。

于 2014-06-27T18:11:30.127 に答える