2009-06-20 29 views
7

公開Silverlight 2.0アプリケーションでアクセスするために、WCFですばやいデータサービスを併用しています。私のデータは非常に静的で比較的シンプルなので、ローカルのXMLファイルに保存したいだけです(編集する人が非常に限られているため、簡単に作成できます)。IISでホストされているWCFサービスの相対パス

私のサービスの中から相対的なパスを見つける最良の方法は何でしょうか。従来のASP.NETでは、このWCFサービス内でServer.MapPath ....を使用することはできませんでした。このソリューションは最終的にホスティングプロバイダでホストされます。私は何も制御できないため、固定された場所をハードコードすることはできません。むしろAppDataフォルダ内のいくつかのXMLファイルへの相対パスを取得するだけです。

提案がありますか?

答えて

11

あなたは、最後に残っているので、まだあなたのASP.NETページと同じもの(多くのへのアクセスを持ってEnvironment.CurrentDirectoryかAppDomain.CurrentDomain.BaseDirectory

+4

AppDomain.CurrentDomain.BaseDirectoryは正しいパスを返します。しかし、Environment.CurrentDirectoryは{program files}フォルダ内のいくつかのパスを返すようです。ご協力いただきありがとうございます。 –

2

WCFサービスを使用して試みることができますHTTPリクエストとレスポンス)。あなたはまだそれほどのようなServer.MapPathのを使用することができます。

HttpContext.Current.Server.MapPath(...) 
+1

これは、ASP.NET互換モードを有効にした場合にのみ機能し、既存のASMX WebサービスをWCFに移植する場合を除き、そのような理由はほとんどありません。 –

0

まず、カレントディレクトリを返すために、サービスに操作を追加します。新しい操作でEnvironment.CurrentDirectoryを返します。クライアントで、現在のディレクトリが何かに驚いているかどうかを確認します。必要に応じて調整します。

1

アプリケーション用のフォルダではなく、IsolatedStorageにファイルを保存できます。リンクされたページの例を見て、その動作を確認してください。

関連する問題