5

Web API アプリケーションは初めてです。List を返す Get() メソッドが 1 つだけある単純な Controller を 1 つだけ使用して、最初のアプリケーションを作成しました。私のPCでは問題なく動作します。ソリューションを公開して IIS 7.5 経由でアクセスした後でも、結果は問題ありません。

http://localhost/Application/api/Controller 

そして期待通りの答えを得る。

そこで、次のステップに進みました。別のサーバーにデプロイして、オフィスの他の人がアクセスできるようにしました。私たちが使用するサーバーは、Windows 2008 サーバーを実行します。私が行ったことは、Visual Studio 2012 の publish コマンドによって生成された Publish フォルダーを単純にコピーし、サーバー コンピューターの inetpub\wwwroot フォルダーに貼り付けることでした。次に、サーバーで実行されている IIS 7.5 にアクセスし、物理パスとして Publish フォルダーを使用して、.NET 4.0 アプリケーション プールを使用して新しいアプリケーションを作成しました (IIS に公開するために PC で行った手順とまったく同じです)。

問題: サーバー マシン (Windows 2008 サーバーを実行している) でアプリケーションにアクセスしようとすると、404 エラーが発生します。私のマシンのように論理的に解決する代わりに、物理パス Application\api\Controller を見つけようとしているようです。

Webで見つけたさまざまなソリューションをすべて試しました。

  • IIS のアプリケーションのマッピング構成で、ExtensionlessUrl-Integrated-4.0 のすべての動詞を有効にしました。
  • WebApiConfig.Register(GlobalConfiguration.Configuration); を追加しました。私のグローバルなアサックスで。

私が気付いたのは、私のマシンには .NET Framework 4.5 がインストールされており、サーバー マシンには 4.0 フレームワーク (クライアントおよび拡張) しかないことです。しかし、4.0 フレームワークを対象とするアプリケーションをコンパイルした後でも、同じエラーが発生します。

bin ディレクトリにある MVC .dll は System.Web.Mvc.dll だけです。他の DLL は必要ですか?

前もって感謝します。

4

1 に答える 1

6

これを試して:

<system.webServer>
    .....
    <modules runAllManagedModulesForAllRequests="true" />
    .....
</system.webServer>
于 2013-08-07T23:11:26.150 に答える