2017-02-24 3 views
1

私は、サービスプロジェクト(ビジネスロジック)とMVC UIプロジェクト(プレゼンテーション)を含むいくつかのプロジェクトを含むビジュアルスタジオソリューションを持っています。n-tier mvcアプリケーションでjsonファイルにアクセスする方法VS2015

私はサービスプロジェクトのクラスの1つにアクセスする必要があるjsonファイルがあります。

私が持っている問題は

物事を私は返しますUIプロジェクトへのパスを試してみてください(未JSONファイルがどこにあるか)ほとんどすべて私が試したことです:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "geo.json"); 
//returns a path contained within UI project 

HttpContext.Current.Server.MapPath("~/geo.json"); 
// also returns a path contained within UI project 

Environment.CurrentDirectory; 
// returns C:\\Program Files (x86)\\IIS Express 

はどうやって取得することができますUIプロジェクトに含まれていないjsonファイルへのパス?

+0

「サービスプロジェクト」はどのようなプロジェクトですか?それはクラスライブラリ(.dll)ですか? –

+0

これはクラスライブラリです。 – user3626232

+0

あなたのクラスライブラリ用のJSONは、デプロイ時に最終的にあなたのUIのフォルダ構造( 'bin'にある可能性が高い)になります。あなたのクラスライブラリでJSONファイルを右クリックし、 'Properties'を選択して' Copy to Output Directory'をいずれかのコピーオプションに変更する必要があります。 –

答えて

0

"サービスプロジェクト"はクラスライブラリなので、実際にはクラスライブラリのパスを基準にして何も実行できません。

コンパイル時にクラスライブラリは.dllファイルに変換され、コンパイル時に参照するプロジェクトのbinフォルダにコピーされます。

サービスプロジェクトのコードがどこから実行されているのかを尋ねると、.dllファイルが終了するので、それを参照するコードの場所が返されます。

私はこれが意味をなさないことを願っています。私が手の人形を使用できるかどうかを説明する方がはるかに簡単ですが、マークダウンは現在面白い小道具の使用をサポートしていません。

上記のコメントにFrankが言及しているように、ファイルのプロパティを選択して[出力ディレクトリにコピー]を選択すると、サービスプロジェクト内の他のファイルもbinフォルダにコピーすることができます。これをgeo.jsonファイルに適用すると、最終的にbinフォルダに格納されます。

また、MVCアプリケーション内では、ファイルのパスを.dllのメソッドにパラメータとして渡すことができます。そのようにして、発信者は情報がどこに格納されているかを知ることができます。

+0

(私はジュニア開発者として頼んでいます)このシナリオを考慮してビジネスロジックを網羅するために使用すべき別のタイプのプロジェクトがありますか? – user3626232

+0

ok ..役に立つように十分詳細に入れようとしています。不明な専門用語を教えてください。 –

+0

これはありがたいことですが、今は意味があります。 JSONをwebapi経由で公開するのではなく、binフォルダ内で継続的に更新/アクセスする方が良いかもしれないと思いますか? – user3626232

関連する問題