38

通常の ASP.NET Web フォーム サイトでは、web.configs "appsettings" を使用してアプリケーション設定データをサイトに追加します。ただし、MVC 3 を使用している場合、この方法で設定値を取得することはできません。

まず、2 つの web.config ファイルがあります。1 つはサイトのルートにあり、2 番目は [ビュー] 領域に表示されます。appsettings 情報をルートの web.config ファイルに入れたいと思いますよね? (他のビューの下に配置すると、「AppSettings」は Web アプリケーションごとに 1 回しか表示されないというエラーが発生するようです。)

それを取得しようとすると (C#: System.Configuration.ConfigurationManager.AppSettings["SettingName"])、空白または空/null の戻り値が返されます。私は何を間違っていますか?

get; を使用してモデルに特定の値を設定するために、モデル領域の下のクラス ファイルでこの情報を実際に取得していることに言及する必要があります。設定;。モデルでこれを行うことが許可されていない可能性はありますか?

Controller.cs で:

WindowsLiveConnect.ServiceConfiguration WLSC = new WindowsLiveConnect.ServiceConfiguration();

ViewBag.ClientID = SC.ClientID; // This returns empty

web.config 内

...

  <appSettings>
    <add key="webpages:Version" value="1.0.0.0"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>

    <add key="ClientID" value="0000000040062A3F" />
    <add key="ClientSecret" value="SUPERSECRETPASSWORD" />
    <add key="RedirectURL" value="http%3A%2F%2Fwww.quilnet.com" />
  </appSettings>

...

Model.cs ファイル内:

        public class ServiceConfiguration
        {
            private string clientid;
            private string clientsecret;
            private string redirecturl;

            public string ClientID
            {

                get { return clientid; }

                set
                {
                    clientid = System.Configuration.ConfigurationManager.AppSettings["ClientID"];
                }
            }

            public string ClientSecret
            {

                get { return clientsecret; }

                set
                {
                    clientsecret = System.Configuration.ConfigurationManager.AppSettings["ClientSecret"];
                }
            }

            public string RedirectURL
            {

                get { return redirecturl; }

                set
                {
                    redirecturl = System.Configuration.ConfigurationManager.AppSettings["RedirectURL"];
                }
            }
        }
4

4 に答える 4

34

あなたはセットを呼んだことがありますか?私はそれが決して呼び出されないと推測しているので、プライベート変数は決して構成から値を取得しません。

この方法で試してみてください (get で値を取得するだけで、設定は必要ありません):

public string ClientSecret
{    
  get { return System.Configuration.ConfigurationManager.AppSettings["ClientSecret"]; }    
}
于 2013-10-25T17:51:12.203 に答える
7

私はこのようにしました:

myVar = System.Configuration.ConfigurationManager.AppSettings["ClientID"].ToString();
于 2016-01-28T21:35:13.930 に答える
1

コードを見ると、sharepoint プロバイダーがホストするアプリを使用していると思いますか? ここで mvc で行う最善の方法は、ビュー レベルにある web.config を無視し、web アプリケーションのルートにあるものだけを使用することです。

私が言及したいもう 1 つのことは、実際のモデルで web.config から構成情報を取得することはおそらく良い考えではないということです。次のいずれかに移動することをお勧めします: - コントローラーのコンストラクター - このモデルを返すファクトリー/リポジトリー

于 2015-05-29T10:57:28.393 に答える