5

ServiceStackを使用してSharePointドキュメントライブラリからドキュメントを取得するAPIを作成し、MVCを使用して結果を出力しています。

ただし、アプリケーションを実行しようとすると、HTTPエラーが発生します。

500.21 ServiceStack.Factorのモジュールリストエラーに、不正なモジュール「ManagedPipelineHandler」が含まれています

SharePointサーバーで認証するために偽装を使用する必要があるため、IISでアプリケーションをクラシックモードで実行しています。

クラシックモードでServiceStackを使用するのは難しいようです。

このエラーを解決するにはどうすればよいですか?

これが理にかなっていることを願っています。

どんな助けでもありがたいです

これが私の設定です:

<system.webServer>
            <modules runAllManagedModulesForAllRequests="true" />
            <validation validateIntegratedModeConfiguration="false" />
            <handlers>
                <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="classicMode" resourceType="Unspecified" allowPathInfo="true" />
            </handlers>
        </system.webServer>

アップデート:

開発マシンで別のユーザーとしてアプリケーションを実行すると正常に動作します。問題はIISとASP.NET開発サーバーの違いのようです。

4

1 に答える 1

4

クラシック モードではルート構成を処理できないと思います。ここに記載されているように - http://www.asp.net/mvc/tutorials/older-versions/deployment/using-asp-net-mvc-with-different-versions-of-iis-cs - 追加を実行する必要がありますIIS 7.0 をクラシック モードで使用する場合の構成、または ASP.NET フレームワーク (aspx、axd、ashx) にマップされるファイル拡張子を使用する場合。

以下の構成を使用して、IIS 7 に対してクラシック モードを動作させることができました。

web.config (部分的で preCondition="integratedMode" を使用):

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
        <add path="servicestack*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" 
             verb="*" preCondition="integratedMode" />
    </handlers>
</system.webServer>

そして、ASP.NET にアクセスするためにルートに .aspx を追加しました (上記のリンクにリストされている他のソリューションも使用できると思います)。

Routes
.Add<Hello>("/hello.aspx")
.Add<Hello>("/hello.aspx/{Name}");

私はに要求をすることができますhttp://localhost/hello.aspx and http://localhost/hello.aspx?name=Test

更新 1

<system.webServer>クラシック モードで実行すると、すべての IIS 7 ( ) 要素を削除できることがわかりました。私の web.config 全体は以下の通りです。要素のパス属性は何<httpHandlers>ですか? おそらく、パスが異なるために 404 が表示されるのでしょうか?

<?xml version="1.0"?>
<configuration>
    <system.web>
        <httpHandlers>
            <add path="servicestack*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
        </httpHandlers>
        <compilation debug="true"/>
    </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
    </system.webServer>
</configuration>

コメントの回答:

したがって、これはあなたの例のように path="api*" と機能的に同等ですか?

いいえ。ここを参照してください: http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspxここ でセクション 2 を見てください: http://www.servicestack.net/ ServiceStack.Hello/要素には、カスタム パスの<httpHandler>path 属性があります。

また、IIS Express を Visual Studio の開発サーバーとして使用します。標準の開発サーバー内では発生しない IIS 7 クラシック モードの問題をシミュレートできるはずです。http://www.microsoft.com/web/gallery/install.aspx?appid=IISExpress

于 2013-03-05T04:50:28.533 に答える