2011-01-07 15 views
131

IIS 6.0で実行されているASP.NET MVC 3サイトを取得しようとしています。私は完全に困惑との多くを持っていないASP.NET:このメソッドは、アプリケーションの起動前の初期化段階で呼び出すことはできません。

<add name="MyMembershipProvider" type="NS.MyMembershipProvider" connectionStringName="MyDatabase" applicationName="/MySite"/> 

:この行に

Parser Error Message: This method cannot be called during the application's pre-start initialization stage.

:私は、サーバーからページを要求するとき

は現在、それが次のエラーを与えます6.0と7.0の違いはもちろんのこと、ASP.NETアプリケーションライフサイクルについてのヒント。それに関するMSDNページを読むことはあまり役に立たないように見えました。

調査のための洞察や良いリンクはありますか? :)

+1

VSローカルホストWebサーバー(Cassini)でMVC 2と同じ問題があります。 –

+1

この同じ問題(および解決方法)は、IIS 7.0のMVC 3にも当てはまります。 – CrazyPyro

+2

MVC4とIIS6にもこの問題があり、新しいプロジェクトがあります。 webmatrix。*を削除して修正しました。 –

答えて

247

は(のappSettingsセクションで)あなたのweb.configファイルでこれを追加します。

<add key="enableSimpleMembership" value="false"/> 
<add key="autoFormsAuthentication" value="false"/> 

EDIT:

をなぜ尋ねるもののために、それはMVC 3に記載されている既知の問題ですrelease notes 詳細here

+3

少し拡大していただけますか? web.configのどこにありますか?キーは何をしていますか?私はそれらのキーのオンラインドキュメントを見つけるのに苦労しています。 –

+0

@Kennet Belenky:appSettingsセクションで – Gregoire

+2

が表示されます。自動的にセキュリティとメンバーシップのルールが定義されるので、カスタムルールを追加する前にそれらを上書きする必要があります。トリッキー。 –

37

アプリケーションをASP.NET MVC3からMVC4にアップグレードした後、このエラーが発生しました。これは、WebMatrixアセンブリ(WebMatrix.WebData.dllおよびWebMatrix.Data.dll)の結果でした。私はこれらの参照とアセンブリを/ binディレクトリから削除し、それが問題を処理しました。

+1

これは私のためにそれを修正していません – rboarman

+2

@rboarman - これは私のためにそれを繰り返し修正しました。アセンブリが/ binディレクトリにまだ置かれていないことは確かですか? –

+0

上記のようにキーを追加することで修正されました。 WebMatrix.WebData.dllとWebMatrix.Data.dllが存在してもどちらの方法も違いはありません。 – rboarman

6

まあ、私はちょうどこのエラーがあり、それは誤って自分のプロジェクトのルートに.cshtmlをコピーしたことが原因です。プロジェクトにも含まれていませんでした。それを削除し、エラーは消え去った。これはIIS7のMVC3で行われました。私はこの問題を抱えている人々の一部が同じボートにいると考えています。

7

@ Ek0nomikが正しい。私たちはMembershipProviderから新しいExtendedMembershipProviderに移行し、WebMatrix名前空間で提供される新機能のいくつかを利用できるようにしました。デフォルトでSimple Membershipが何らかの理由で有効になっているため、SimpleMembershipProviderを使用することを望んでいないので明示的に無効にしなければなりませんでした。私たちがしなければならなかったのは、web.configファイルにこれを追加しました

<add key="enableSimpleMembership" value="false"/> 

有効単純なメンバーシップを持つことは、のApplication_Startハンドラ前に実行するプロバイダーの初期化コードを引き起こしました。私たちのアプリの構造は、App_Startが最初に実行する必要があります。個人的に私はいつもこれを期待しますが、シンプルメンバーシップはこの動作を変更します。注意してください。

0

これは、アプリケーションで非常に早すぎる数のReflection呼び出しのいずれかが原因で発生します。他の回答のWeb.Configの提案は、そのようなReflection呼び出しが行われないようにするだけです。しかし私の場合:

私はEntity Frameworkを使用していて、update-databaseを実行しました。私は:

すべての名前空間/プロジェクトですべてのコードを取得するために最近修正されたライブラリを使用したコードがありました。具体的には、

System.Web.Compilation.BuildManager.GetReferencedAssemblies() 

Kaboomを呼び出しました。それはこのあいまいなエラーを引き起こしました。 EFマイグレーションは、アプリケーションが半分実行され、半分が実行されていない別のゾーンで実行されます。つまり、上記の方法は、マイグレーションが呼び出すコードによって決して呼び出すことができません。

関連する問題