DotNetOpenAuth SDK-3.4.5.10201.vsixをインストールしましたが機能しません。それは(私はlocalhostとして実行しているとき)ローカルに動作しますが、私はそれを公開しようとすると動作していません。
表示されるIISエラーメッセージは
エラー概要
HTTPエラー500.22 - 内部サーバーエラー
統合管理パイプラインモードには適用されないASP.NET設定が検出されました。
そして
Module ConfigurationValidationModule Notification BeginRequest Handler StaticFile Error Code 0x80070032
それから問題を解決する方法に関するいくつかの提案があります:
あなたが試すことができるもの:
設定を
system.webServer/modules
セクションに移行します。手動で、またはコマンドラインからAppCmdを使用して(たとえば%SystemRoot%\system32\inetsrv\appcmd migrate config "Default Web Site/"
)実行できます。AppCmd
を使用してアプリケーションを移行すると、統合モードで動作し、クラシックモードとそれ以前のバージョンのIISで動作し続けます。このエラーを無視しても問題ないと確信している場合は、
system.webServer/validation@validateIntegratedModeConfiguration
をfalseに設定することで無効にできます。または、アプリケーションをクラシックモードのアプリケーションプール(
%SystemRoot%\system32\inetsrv\appcmd set app "Default Web Site/" /applicationPool:"Classic .NET AppPool"
など)に切り替えます。アプリケーションを移行できない場合にのみこれを行ってください。
( "既定のWebサイト"と "Classic .NET AppPool"をアプリケーションパスとアプリケーションプール名に設定します)
しかし、問題は私がISSサーバーにアクセスできないということです。私はそれを所有していないからです。これを解決する方法はありますか?
その2nd オプションはあなたが望むものです。
web.config
に、これらのキーが存在することを確認してください。
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
<validation validateIntegratedModeConfiguration="false"/>
を追加すると症状が解消されますが、すべての状況に適しているわけではありません。この問題を何度か繰り返してきたので、私は他の人が問題を克服するだけでなくそれを理解するのを手助けしたいと思います。 (これはIIS 6が神話と噂に薄れていくにつれてますます重要になっている。)
バックグラウンド:
この問題とそれを取り巻く混乱は、ASP.NET 2.0とIIS 7の導入で始まった。IIS 6はパイプラインモードを1つだけ持ち続けており、それはIISと同等です。 ] 7 +は "クラシック"モードを呼び出します。 IIS 7+で実行されているすべてのアプリケーション用の2番目の、新しい、そして推奨されるパイプラインモードは "統合"モードと呼ばれます。
それで、違いは何ですか?主な違いは、ASP.NETがIISと対話する方法です。
クラシックモード はIISパイプラインと対話できないASP.NETパイプラインに限定されています。基本的にリクエストが入ってきて、サーバの設定を通してIIS 6/ClassicがASP.NETがそれを処理できると言われたら、IISはリクエストをASP.NETに渡して先に進みます。これの意味は例から集めることができます。静的イメージファイルへのアクセスを許可すると、IIS 6パイプラインがそれらの要求を自分自身で処理し、ASP.NETがそれらの要求を参照することがなくなるため、ASP.NETモジュールではアクセスできません。 *一方、Foo.aspxのリクエストのように、どのユーザーが.ASPXページにアクセスできるかを承認することは、IIS 6/Classicでも簡単です。IISは常にそれらのリクエストを処理するからです。 ASP.NETパイプラインへ。クラシックモードでは、ASP.NETはそれが言われていないことを知らず、IIS 6/Classicがそれを伝えていないかもしれないことがたくさんあります。
ASP.NETハンドラーおよびモジュールはIISパイプラインと直接対話できるため、 統合モード が推奨されます。 IISパイプラインが要求をASP.NETパイプラインに渡すだけではなくなりました。これで、ASP.NETコードをIISパイプラインとそれにヒットするすべての要求に直接フックできるようになりました。つまり、ASP.NETモジュールは静的イメージファイルへの要求を監視できるだけでなく、それらの要求を傍受し、アクセスを拒否したり、要求をログに記録したりすることによってアクションを実行することができます。
エラーを克服する:
それから再びあなたはあなたのアプリケーションにフェイスリフトを与えているか、あるいはあなたが手動で、または他の方法でNuGetを通してサードパーティのライブラリをインストールするまでそれはうまくいっていた。その場合、system.web
にhttpHandlers
またはhttpModules
が追加された可能性は十分にあります。 validateIntegratedModeConfiguration
のデフォルトはtrue
なので、結果はあなたが見ているエラーです。これで2つの選択肢があります。
system.web
からhttpHandlers
およびhttpModules
要素を削除します。これには2つの可能性のある結果があります。system.web
に追加し続けているhttpHandlers
とhttpModules
を削除するのにうんざりするようになりました。validateIntegratedModeConfiguration
をfalse
に設定することはできないと言うつもりはありません。良い読みます:
*そのようなことが好きなら、 wildcard mappings のような呪文を通してIIS 6/Classicからあらゆる種類の奇妙なことをASP.NETパイプラインに取り込む方法はもちろんあります。
それでもHTTPモジュールを使用する必要がある場合は、次のように設定する必要があります(.NET 4.0フレームワーク)。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="MyModule" type="[Namespace].[Class], [Assembly]"/>
</modules>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
私はこの問題に遭遇しましたが、異なる修正をしました。これは、Control Panel>Administrative Tools>IIS Manager
を更新し、私のAppサイトのManaged PipelineをIntegrated
からClassic
に戻すことを含みました。
IIS認証に矛盾がないか確認してください。つまり、匿名認証とASP.NET偽装を有効にすると、両方ともエラーが発生する可能性があります。
Web.configで、これらのキーが存在することを確認してください。
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
</configuration>
Asp.Net Impresonation =無効にする In IISサイト認証を確認する
これは私のために働いた:
私が最初にサイトを作成したときに何かが南に行ったようです。私はエラーの原因を知らずに "あなたのマシンを再起動し、次にWindowsを再インストールする"のような解決策を嫌います。しかし、これは私のために働いた。早くて簡単。他の人に役立つことを願っています。
私はこの問題に遭遇し、@ Jeremy Cookの答えに触発されました、一体何が私のweb.configを好まなかったのかIIS 7統合モードの原因を突き止めるために弾丸をかみました。これが私のシナリオです:
私は(残念ながら).NET 4を使用しなければならなかったため、Web API 2.2(.NET 4.5が必要)を使用できないプロジェクトで属性ルーティングを使用したいと思いました。よく知られたNuGetパッケージはこのセクションを<system.web>
セクションの下に追加しました:
<system.web>
<httpHandlers>
<add verb="*" path="routes.axd" type="AttributeRouting.Web.Logging.LogRoutesHandler, AttributeRouting.Web" />
</httpHandlers>
</system.web>
[この部分は、古いバージョンのIISでは必須です。
このセクションを削除すると、HTTP 500.23をクリアできました。
要約: 私は、単に「症状を隠す」のではなく、なぜ物事がうまくいかないのかを理解することが重要であると私が言った2番目のジェレミーの言葉。症状を隠さなければならないとしても、あなたは自分が何をしているのか(そしてなぜなのか)知っています:-)
これを解決するのに数時間かかったのは、このエラーについて私がここで見つけた設定はすべて同じであったが、それでもまだうまくいかなかったためです。問題は、それが機能し始めたClassic.NetAppPoolでアプリケーションにそのフォルダを変換した後に、ファイルがWinCEデバイスに送信されるべきである私のWebサービス内のフォルダを持っていたことでした。
私の場合、私はweb.configファイルで参照されているbinフォルダにdllがありませんでした。それで、あなたがweb.configで何か設定を使っていたが実際にdllを持っていないかどうかチェックしてください。
ありがとう