3

ASP.NET MVC 3 アプリケーションがあります。Visual Studio 2012 RC の下で IIS Express を使用して、ローカル マシンで正常に実行されます。

しかし、私のサーバー/ホストでは実行されていないようです。次のエラーが表示されます。

HomeController の暗黙的な自己バインディングを使用して HomeController をアクティブ化する際のエラー 実装型のインスタンスを作成するために使用できるコンストラクターがありませんでした。

アクティベーション パス:

  1. HomeController のリクエスト

提案:

  1. 実装型にパブリック コンストラクターがあることを確認します。

  2. Singleton パターンを実装している場合は、代わりに InSingletonScope() によるバインディングを使用してください。

Web全体を検索しましたが、解決策が見つかりませんでした。コンストラクターが定義されていないか、HomeController にプライベート コンストラクターがないため、エラーのように見えますが、そうではありません。

NInject.dllbinフォルダーにあります..

わかりません...

4

3 に答える 3

0

私はまったく同じ問題を抱えていて、同じ方法で修正しました。

参考までに、さまざまなサーバー (サーバーの 1 つが同じコードで動作していた) で ninject.dll を比較したとき、すべての .dll ファイルのバージョンとサイズが同じであったことに注意してください。

同僚は、dll が実際には異なることを確認する Hashtab というツールをダウンロードするように勧めてくれました。

すべてのサーバーで、サイトは.NET4.0で実行するようにセットアップされましたが、機能するサーバーでは.NET4.5がインストールされました...サイトが実行されたアプリプールは.NET4でしたが、明らかに.NET4.5がインストールされていましたいくつかのファイルを追加しました。

疑わしい場合は、.dll を削除し、プロジェクトが正しいバージョンの .NET フレームワークでビルドするように構成されていることを確認してから、NuGet を介して dll を追加します。

于 2014-08-22T08:24:46.320 に答える
0

それは本当に NInject.dll の問題でした。以前は .NET 4.5 を使用していましたが、Web ホストには .NET 4.5 がありました。そこで、アプリケーションを .NET 4.0 に切り替えました。後で、既に実行されているアプリケーションから NInject.dll を取得し、それを現在のアプリケーションの dll に置き換えたところ、機能しました。

于 2012-11-17T14:52:11.190 に答える