2012-04-02 4 views
2

私は認証が必要なアプリケーションを持っていますが、アプリケーションに匿名で呼び出すことのできる関連サービスがいくつかあります。呼び出しはhttpHandlerを介して行われ、そのうちのいくつかはワイルドカードを使用します。ワイルドカードを使用していないのhttpHandlersのために、私はweb.configファイルでlocation要素を使用してセキュリティを管理することができます:最初のハンドラについて認証が必要なサイトでワイルドカードを使用するhttpHandlerに匿名アクセスを許可するにはどうすればよいですか?

<httpHandlers> 
    <add verb="*" path="ProcessFile.ashx" type="..." validate="false" /> 
    <add verb="*" path="DoSomethingElse.*.*.ashx" type="..." validate="false" /> 
</httpHandlers> 

、それは簡単だった(簡潔にするため省略タグ終了):

<location path="ProcessFile.ashx"> 
    <system.web> 
    <authorization> 
     <allow users="?" /> 
    ... 

ロケーションでワイルドカードが使用されないため、2番目のハンドラは機能しません。私は「ディレクトリ」を使用してみましたが、動作していないよう:

<httpHandlers> 
    .. 
    <add verb="*" path="test/DoSomethingElse.*.*.ashx" type="..." validate="false" /> 
</httpHandlers> 


<location path="test"> 
    <system.web> 
    <authorization> 
     <allow users="?" /> 
    ... 

は、この作業を取得する方法はありますか?何らかの形で構文が間違っていますか?

答えて

1

匿名で使用できるハンドラを共通のフォルダに分けて、そのフォルダの場所のアクセス許可を普遍的に使用できるように設定することをお勧めします。あなたはハンドラ/Handlersおよびサブフォルダ/Public用のフォルダを持っているのであれば、あなたは、次を持つことができます:

<location path="/Handlers/Public"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 

その後、あなたは、個々の名前で、それを指定することなく、ここにあなたのワイルドカードハンドラを置くことができます。

+0

これは、私が 'test'ディレクトリを使ってみたときにやっていると思ったことです。構文に欠けているものはありますか? – Peter

+0

これはうまくいきました。私は正しいことがありました。同じ種類の治療が必要であることに気付かなかったスクリプトに隠された別のハンドラがありました。 – Peter