0

それを呼び出すはずの IIS であることはわかっています。ともかく; 特定の拡張子を持つファイルがドキュメント ライブラリでクリックされたときに特別な文字列を返すはずの SharePoint ソリューションがあります。

対応する web.config ファイルで、この HTTP ハンドラーを実行するために次のように記述しています。

<system.webServer>
   <handlers>
       ...
       <add name="MyFileHandler" path="*.bar" verb="*" type="Foo.Example.MyHandler, Foo.Example, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3b53a24010893ac2" resourceType="File" />
       ...
    </handlers>
</system.webServer>

HttpHandler クラスは次のようなものです。

namespace Foo.Example
{
    public class MyHandler : IHttpHandler
        {   
            public MyHandler(){} //For breakpoint

            public void ProcessRequest(HttpContext context)
            {
                //Do stuff and write to response.
            }

            public bool IsReusable
            {
                get { return false; }
            }
       }
}

Sharepoint で「.bar」拡張子のファイルを開こうとすると、404 が返されます。ハンドラをデバッグすると、ハンドラのコンストラクタが呼び出されているのに「ProcessRequest」が呼び出されていないことがわかるため、ProcessRequest で行うことは関係ありません。 . デバッガーに加えて、デバッグ行 (File.AppendAll) も配置しました。ここでも、デバッグ出力に従ってコンストラクターのみが呼び出されます。

IIS 7.5.7600

Sharepoint 2010 ファウンデーション

4

2 に答える 2

1

結局のところ

resourceType="ファイル"

web.config のハンドラ タグに問題がありました。削除するか、「未指定」として設定してください。

それはすでにここで言及されていますが、残念ながら、以前は見つけられませんでした。

于 2012-04-20T08:50:11.563 に答える
0

私が考えることができる唯一のことは、ハンドラーを実際に最初のハンドラーに移動してみることです。

それ以外の場合は、SharePoint の動作をオーバーライドしようとするのではなく、実際に SharePoint と統合する方がよい場合があります。この場合、達成したいことについて別の質問を投稿する必要があります。

于 2012-04-19T16:41:08.777 に答える