質問
用していただきたいと思い、作業フォルダのピ願います。どこで買えますか?
る場合ようにしてい
HttpContext.Current.Request.MapPath(HttpContext.Current.Request.ApplicationPath)
を取得します。nullの参照例外のHttp.現在のオブジェクトがnullの場合).
んのフォルダのフォルダであるが、WCFサービスが走っています。場合に設定します aspNetCompatibilityEnabled="true"
, 人にとってこのエラー:
サーバを提出していなかったため、意味のある返信;これによる契約のミスマッチは、時期尚早セッションの停止または内部サーバエラーになります。
解決
私は、WCFアプリケーションをホストされていると私はこれが私のために働いていたことがわかった私のIIS6のために同じ情報を必要と
string apPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
いつものように、YMMVます。
他のヒント
をご覧くださいongleの答えします。であります。
更新後の詳細情報
以下の勤務しました。でも新しい、WCFサービスを開催IISをService1.svc.
- 追加
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
web config.<system.serviceModel>..</ ..>
存在しています。 - 追加
AspNetCompatibilityRequirementsAttribute
のサービスのモードで許可されます。 - 使用
HttpContext.Current.Server.MapPath(".");
のルートディレクトリです。
以下のコードのサービスクラスです。私のIService1インターフェース。
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService1
{
public void DoWork()
{
HttpContext.Current.Server.MapPath(".");
}
}
下からの抜粋です。config.
<system.serviceModel>
<!-- Added only the one line below -->
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<!-- Everything else was left intact -->
<behaviors>
<!-- ... -->
</behaviors>
<services>
<!-- ... -->
</services>
</system.serviceModel>
古い回答
どういうことなんのフォルダ?WCFサービスが開催される予定である複数の異なる方法で、異なる評価項目で作業フォルダが少し曖昧なものです。
を取得することができます通常の"作業用フォルダ"と呼 ディレクトリです。GetCurrentDirectory().
HttpContextはASP.Net オブジェクトです。場合でも、WCFで開催されるIISりのさるとしあきだいえっとしないASP.Net そのためにASP.Net 技法はないのでデフォルトです。OperationContextは、WCFのHttpContext.のOperationContext情報が含まれ、着信要求送信対応しています。
が最も簡単な方法も実行のサービス ASP.Net 互換モード による切り替えたいです。config.これまでのアクセスASP.Net HttpContext.できる*HttpBindingsとIISの開催ものです。切り替えるには、互換性モードでは、以下を追加します。config.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
あなたが望む内容に応じて。私は通常、「〜/フォルダ/ファイル」のようなURLを解決します。これは働いていたものです。
System.Web.Hosting.HostingEnvironment.MapPath("~/folder/file");
より一般的な、私はこの1つを使用しています。
AppDomain.CurrentDomain.BaseDirectory
aspNetCompatibilityEnabled = "true" が私の問題を解決しているはずですが、私はこのエラーを得ます:
サーバーは、意味のある回答を提供していませんでした。これは、契約の不一致、早期セッションのシャットダウンまたは内部サーバーエラーが原因である可能性があります。
私は私の現在のアプリケーションドメインからそれを取得することによって、私の実行中のWCFサービスの物理パスを取得して私の問題を解決します:
AppDomain.CurrentDomain.BaseDirectory
WCFで使用HostingEnvironment.ApplicationPhysicalPathは、アプリケーションの物理パスを検索します。 名前空間を使用してください 使用System.Web.Hosting;