File Not Found (SharePoint フォーム認証)

先日来、SharePoint 2007 のインストールと設定をやっていたわけですが、どうしても上手く動いてくれませんでした。なにをやっても「ファイルがみつかりません」としか表示されないのです。
もうあきらめかけた5日目、ついに解決策にたどり着きました。
それが、今回ご紹介する内容です。
The Soundより “File Not Found ( SharePoint Forms Authentication )を、原著者である Kurt 氏より許可を頂き翻訳しました。本稿、及び原文に関する全ての著作権はKurt氏に帰属します。
Copyright (c) 2006 Kurt. All rights reserved.
なお、翻訳ミス、変な日本語などに関する責任は、全て翻訳者たる私にあります。
——————- 翻訳 ここから ——————-
( これは SharePoint 2007 におけるフォーム認証 のシリーズの2つ目です。このシリーズのちょっと前のものはコチラ、続きはコチラです。)
このエラーは、フォーム認証を使ったWebアプリケーションで今日まで出続けていました。フォーム認証を使ったアプリケーションを設定した後、login.aspxにリダイレクトすると「ファイルが見つかりません」と言われてしまいます。404エラーではなく、そのページは単に「ファイルが見つかりません」と言っているだけなのです(しかもテキストで、SharePointのヘルプでもなく)。ログインしようと試みてもその機会すら与えられず-ログインは必要なのですが-非常に効果的にサイトから締め出されてしまうのです。
この原因を探しにSharePointのコードを掘り進めるまで、どうしたらいいか途方にくれました。このように広範囲に影響を及ぼす原因はわかりませんでしたが、今のところ私がインストールした全ての場所でこの現象が見られましたので、以下に記述する解決策をポストしようと考えました。この解決策は、Microsoftによってサポートされていませんし、社内のSharePoint 関係者に聞いても判りませんでした。
(注意:以下の解決策を行う前に、login.aspx と authenticate.aspx のバックアップを取ることを推奨します。)
基本的にこのエラーは Microsoft.SharePoint.ApplicationPages.dll アセンブリにlogin.aspx , authenticate.aspx からアクセスできないことが原因です。Login.aspxから以下のタグを取り除くことによりそれを検証することが出来ます。
< % @ Assembly Name=”Microsoft.SharePoint.ApplicationPages, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”% >
このタグを取り除くことによりコンパイルエラーが発生しますが、ファイルは読み込まれます。そこで、先ほど削除したタグを戻して、本当にApplicationPages アセンブリが使用可能であるかを確かめます。
私の解決策は、このApplicationPage アセンブリを GAC (Global Assembly Cache)に放り込むことでした(これは私がハックした方法です。MSはそうすべきでないと言いましたが、最初の場所でアクセスできない理由については教えてくれませんでした。)このApplicationPages.dll は ¥program files¥common files¥Microsoft Shared¥web server extensions¥12¥config¥bin にあります。
/_layouts/login.aspx と通常のログインページが表示できるようになります。しかし、”Sign in “のリンクをクリックすると、/_layouts/authenticate.aspx が同じような「ファイルがみつかりません」を表示しますが、今度はSharePoint のヘルプです。ここで再び、ApplicationPages アセンブリタグが有罪なのです。
< % @ Assembly Name=”Microsoft.SharePoint.ApplicationPages” % > をlogin.aspxから取ってきた
< % @ Assembly Name=”Microsoft.SharePoint.ApplicationPages, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”% >
に置き換えます。そうすると、ちゃんと動くようになります。
これを全てのサーバーに行わなければならないと言うのは、非常にぞっとすることです。しかも、理想的ではないどころか、おそらくSharePointのバグだと思います。しかし、Beta2でフォーム認証を動かそうと思ったら必要なハックでしょう。この変更を行ってから後、「ファイルが見つかりません」エラーと出会うことはありませんでした。
もし同じ問題に引っかかり、この記事が気に入ったのでしたら、メールを投げてください( kguenther at infusiondev dot com )。同じ問題に引っかかった人がどれくらいいるか知りたいと思っています。
——————- 翻訳 ここまで ——————-
最後に、この内容の翻訳をご快諾いただいたKurt氏に感謝します。
At the end of this post, I’d like to express my thanks to Kurt who consented to this translation willingly.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree