質問するログイン新規登録

回答編集履歴

5

追記

2020/07/11 09:21

投稿

退会済みユーザー
answer CHANGED
@@ -23,7 +23,7 @@
23
23
 
24
24
  以下のようにすれば LibraryA の Settings.settings ファイルに設定した文字列は、MVC のコントローラーで、質問者さんと同じコードを使って取得できます。
25
25
 
26
- MVC アプリのプロジェクトと同じソリューション内にクラスライブラリ LibraryA を追加し、下の画像の通り Settings.settings ファイルに文字列情報を追加。Class1.cs の中の ClassA のコードは質問のコードをそのままコピペします。
26
+ MVC アプリのプロジェクトと同じソリューション内にクラスライブラリ LibraryA を追加し、下の画像の通り Settings.settings ファイルに文字列情報を追加。**スコープはもちろん「アプリケーション」でなければなりません**。Class1.cs の中の ClassA のコードは質問のコードをそのままコピペします。
27
27
 
28
28
  ![イメージ説明](a3e4a15152e086840fc2de5c0c3073be.jpeg)
29
29
 

4

追記&訂正

2020/07/11 09:21

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,4 @@
1
- MVC プロジェクトとライブラリのプロジェクトの Visual Studio 上での構成がどうなっているか、参照設定はしているのか、MVC アプリの実行はどのようにしているのか、詳しいことが何も書いてないので、想像を膨らませてのレスですが・・・
1
+ MVC プロジェクトとライブラリのプロジェクトの Visual Studio 上での構成がどうなっているか、参照設定はしているのか、MVC アプリの実行はどのようにしているのか、詳しいことが何も書いてないので、想像を膨らませてのレスですが・・・
2
2
 
3
3
  ライブラリが使う構成ファイルがワーカープロセスからアクセスできない場所にあるからではないかと思います。問題の Properties.Settings.Default.ValueAProp を保存する構成ファイルはどこにあるのですか?
4
4
 

3

追記

2020/07/11 03:00

投稿

退会済みユーザー
answer CHANGED
@@ -15,4 +15,38 @@
15
15
 
16
16
  「スコープはユーザー」ということは、ユーザーの個人情報と思いますが、であればそれを構成ファイルに保存することは ASP.NET Web アプリでは不可能です。無理筋とかいうレベルではなくて、誰が何と言おうと 100% 不可能です。
17
17
 
18
- ユーザー固有の情報ならユーザー認証を実装していると思いますが、ASP.NET Identity ならプロファイルを使ってはいかが?
18
+ ユーザー固有の情報ならユーザー認証を実装していると思いますが、ASP.NET Identity ならプロファイルを使ってはいかが?
19
+
20
+ **【追記2】**
21
+
22
+ 下の 2020/07/11 11:01 の私のコメントで「後で、どのように試したかを質問欄に追記しておきます」と書きましたが、それを以下に追記します。
23
+
24
+ 以下のようにすれば LibraryA の Settings.settings ファイルに設定した文字列は、MVC のコントローラーで、質問者さんと同じコードを使って取得できます。
25
+
26
+ MVC アプリのプロジェクトと同じソリューション内にクラスライブラリ LibraryA を追加し、下の画像の通り Settings.settings ファイルに文字列情報を追加。Class1.cs の中の ClassA のコードは質問のコードをそのままコピペします。
27
+
28
+ ![イメージ説明](a3e4a15152e086840fc2de5c0c3073be.jpeg)
29
+
30
+ MVC プロジェクトで LibraryA を参照に追加します。
31
+
32
+ ![イメージ説明](d6f5303444f82fcd06c3bcb691a2e4ff.jpeg)
33
+
34
+ そうすれば、ソリューションをビルドすると自動的に MVC プロジェクトの bin フォルダに LibraryA の .dll とともに .dll.config が コピーされます。その .dll.config に LibraryA の Settings.Settings ファイルに設定した文字列 "LibraryA の Settings.settings に設定した文字列" が含まれています。
35
+
36
+ ![イメージ説明](53d2138bff0d4405cd852c76dba4c150.jpeg)
37
+
38
+ その後、コントローラで、質問者さんのコードの var result = LibraryA.ClassA.ValueA; を使って、bin フォルダにコピーされた .dll.config ファイルから目的の文字列を取得できます。
39
+
40
+ なので、最初の回答に書いた、
41
+
42
+ > ライブラリが使う構成ファイルがワーカープロセスからアクセスできない場所にある
43
+
44
+ ・・・は当たっていると思います。MVC プロジェクトの bin フォルダに .dll.config が無いのでは?
45
+
46
+ > 現状システムでは、サーバ側webアプリケーション(ASP.NET)とサーバ側常駐アプリケーション(C#コンソールアプリケーション)で、それらの橋渡しをする為に、同じ設定値を参照する必要があります。
47
+
48
+ 「同じ設定値を参照」というのが、物理的に同じファイルから値を取得するということですと、それは無理っぽいです。.dll.config ファイルの配置場所は MVC アプリとコンソールアプリで別にならざるを得ないようですので。
49
+
50
+ 同じ内容の .dll.config ファイルのコピーを 2 つ作って、MVC アプリとコンソールアプリに別々に配置するということは可能かもしれません。
51
+
52
+ そこは自分は未検証・未確認です。質問者さんの方で試して結果を教えてください。

2

追記&訂正

2020/07/11 03:00

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,4 @@
1
- MVC プロジェクトとライブラリのプロジェクトの Visual Studio 上での構成がどうなっているか、参照設定杯はしているのか、MVC アプリの実行はどのようにしているのか、詳しいことが何も書いてないので、想像を膨らせてのレスですが・・・
1
+ MVC プロジェクトとライブラリのプロジェクトの Visual Studio 上での構成がどうなっているか、参照設定杯はしているのか、MVC アプリの実行はどのようにしているのか、詳しいことが何も書いてないので、想像を膨らせてのレスですが・・・
2
2
 
3
3
  ライブラリが使う構成ファイルがワーカープロセスからアクセスできない場所にあるからではないかと思います。問題の Properties.Settings.Default.ValueAProp を保存する構成ファイルはどこにあるのですか?
4
4
 

1

追記

2020/07/10 09:36

投稿

退会済みユーザー
answer CHANGED
@@ -5,4 +5,14 @@
5
5
  構成ファイルの保存場所の一般的な説明については以下の記事を見てください。
6
6
 
7
7
  構成ファイルの保存場所
8
- [http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx](http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx)
8
+ [http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx](http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx)
9
+
10
+ **【追記】**
11
+
12
+ 今気が付きました。
13
+
14
+ > //ValueAは設定ファイル内に定義(スコープはユーザー)
15
+
16
+ 「スコープはユーザー」ということは、ユーザーの個人情報と思いますが、であればそれを構成ファイルに保存することは ASP.NET Web アプリでは不可能です。無理筋とかいうレベルではなくて、誰が何と言おうと 100% 不可能です。
17
+
18
+ ユーザー固有の情報ならユーザー認証を実装していると思いますが、ASP.NET Identity ならプロファイルを使ってはいかが?