2011-01-31 23 views
4

私は、WCFサービスとHttpHandlerをホストするWebサイトを持っています。 aspNetCompatibilityEnabledをオンにすると、HttpHandlerがWCFリクエストを取得し始めます。私はこれが.svc拡張を持っていて、ハンドラが.svcファイルを扱うように設定されていないので、これが起こるとは思わないでしょう。ハンドラはとてもとして登録されていますHttpHandlerがWCFリクエストを処理しないようにする

<system.webServer> 
<handlers> 
    <add name="TTPDeploy" path="*.deploy" verb="*" type="ServiceHost.DeploymentHandler" resourceType="Unspecified" preCondition="integratedMode" /> 
    <add name="TTPManifest" path="*.manifest" verb="*" type="ServiceHost.DeploymentHandler" resourceType="Unspecified" preCondition="integratedMode" /> 
    <add name="TTPApplication" path="*.application" verb="*" type="ServiceHost.DeploymentHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" /> 
</handlers> 
</system.webServer> 

私はWCFとのhttpHandlersについて何かを理解していないので、これは単純であると確信しています。思考?


更新

私は別の方法で問題を解決することになりました。 aspNetCompatibilityEnabledをtrueに設定している間、私のWCFリクエストを取得できないため、私はfalseに戻しました。

私の中核的な問題は、Webへの物理ファイルパスをWCF呼び出しから取得する必要があることでした。 WCFを使用して物理的なアプリケーションパスを取得するときに述べた別の投稿(私は今見つけることができません)を見つけたので、HostingEnvironment.ApplicationPhysicalPathを使用してください。これは、問題に対するはるかに単純なアプローチですが、まだこの質問に答えていません。

なぜ私のハンドラは.svcファイルに登録されていないときにWCF要求を受け取りますか?

+0

セルフホストのWindowsアプリ/ NTサービスであなたのWCFサービスを:

web.configファイルに以下を追加し、要求があなたのハンドラに取得できるようにするにはこれらの問題...... –

+0

残念ながら、これはオプションではありません。なぜなら、IISが(柔軟性に関連するいくつかの問題はありますが)IISが私に提供する柔軟性/構成可能性が必要だからです。 –

+0

セルフホスティングの際には、どのような柔軟性がありませんか? –

答えて

0

IISはいくつかの設定のために要求を受け取りました。これはmachine.configにある可能性があります。あなたがのどれを持っていないだろう -

<compilation>  
<buildProviders>   
    <remove extension=".svc" />  
</buildProviders> 
</compilation> 
+0

いいえ、machine.configには何もありません。ビルドプロバイダから.svcエクステンションを削除することは、悪い考えであろうかと思いますが、WCFリクエストに対応するにはまだWebサイトが必要です。基本的には、私はWCFとハンドラの両方が要求に応答したいと思っています。 –

+0

2人のハンドラが同じリクエストを処理できるとは思いません。あるハンドラが要求を受け取ると、それは他のハンドラでは使用できなくなります。 –

+0

合意しましたが、私は2つのハンドラで1つのファイルを処理しようとしていません。 2つの異なるハンドラーで2つの異なるファイルタイプ(つまり、アプリケーションと.svc)を処理しようとしています。 –

関連する問題