単純なHTTPファイルサーバーを構築しています。
WCFサービス(FileService.svc)を公開するasp.netWebアプリケーションがあります。
サービス契約は次のとおりです。
[OperationContract]
[WebGet(UriTemplate = "/*")]
Stream HandleFileRequest();
サービスの実装は非常に簡単で、基本的に私は以下を使用します:
WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri
返されるファイルのパスを取得するには(ファイルを抽出するには少し解析が必要です)。
したがって、たとえば、IISでローカルにアプリをホストする場合、次の場所からファイルをリクエストできます: http:// localhost:65000 / FileService.svc / someFolder1 / someFolder2 / someFile1.jpg
この要求がSilverlightアプリ内から行われると、問題が発生します。Silverlightは、http:// localhost:65000 / clientaccesspolicy.xml
でclientaccesspolicyファイルを検索します
。問題は、FileService.svcがURLから省略されているため、この要求がサービスに到達しないことです。
(すべてのファイル要求をHandleFileRequest()のWCFサービスで処理し、他のメカニズムでは処理しないようにします。)
私が考えることができる1つの解決策は、IIS 7のURL書き換えモジュールを使用することです。
これはこれを行う正しい方法ですか、それともこれに対するより簡単な解決策がありますか?