1

Web アプリケーションを起動する Windows デスクトップ アプリケーションがあります。

private void Home_Load(object sender, EventArgs e)
       {
           string url = string.Format("http://localhost:49916/Express/Login.aspx?yek@soh={0}", System.Configuration.ConfigurationSettings.AppSettings["HK"].ToString());

           Process.Start("IExplore.exe", url);
           this.Close();
       }

私のマシンでは問題なく動作しています。次に、それをインストールするためのセットアップ プログラムを作成しました。これは問題なく動作しましたが、新しくインストールしたプログラムを運用マシンで実行すると、次の例外が発生します。

System.NullReferenceException: Object reference not set to an instance of an object.
   at HospitalClient_App.Home.Home_Load(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ContainerControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

ラインを変えたら

 Process.Start("IExplore.exe", url); 

Process.Start("IExplore.exe","http://localhost:49916/Express/Login.aspx?yek@soh=6775228");

その後、プログラムが動作します。

私の app.config は次のとおりです。

<configuration>
    <appSettings>
        <add key="HK" value="PRO2"/>
        <add key="ClientSettingsProvider.ServiceUri" value=""/>
    </appSettings>
    <startup>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

この問題を解決するにはどうすればよいですか? 問題の原因は何ですか?

4

3 に答える 3

2

私のサイキック デバッガーが NRE の可能性を確認できる唯一の場所は次のとおりです。

ConfigurationSettings.AppSettings["HK"].ToString()

(これは非推奨です。使用しますConfigurationManager.AppSettings[])。

そこにスローされるという事実は、キーを持つ AppsettingHKが見つからなかったことを教えてくれます。ConfigurationSettings.AppSettings["HK"]nullnull.ToString()

<add key="HK" value="..." />が関連する構成の appsettings セクションにあることを確認します。

于 2013-07-03T08:27:15.523 に答える
1

間違った app.config を見ている可能性がありますか? 私はこれを100回行いました。

于 2013-07-03T09:48:30.010 に答える
0

実行時に読み取られる構成ファイルのファイル名は app.config ではありません。アプリケーション名.拡張子.configです。

例: application.exe を実行している場合、構成ファイルの名前は application.exe.confiig になります。このファイルは、アプリケーションと同じディレクトリにある必要があります。

于 2013-07-03T11:01:05.953 に答える