1

我有一个 Windows 桌面应用程序,从中启动一个 Web 应用程序。

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[])。

它在那里抛出的事实会告诉你,找不到带键的 Appsetting HK,导致ConfigurationSettings.AppSettings["HK"]返回null,导致null.ToString()抛出上述异常。

确保 an<add key="HK" value="..." />在相关配置的 appsettings 部分中。

于 2013-07-03T08:27:15.523 回答
1

可能是您正在查看错误的 app.config 吗?我已经这样做了 100 次。

于 2013-07-03T09:48:30.010 回答
0

在运行时,正在读取的配置文件的文件名不是app.config。它是 applicationname.extension.config。

例如:如果您正在运行 application.exe,那么您的配置文件的名称将是 application.exe.config。该文件应与您的应用程序位于同一目录中。

于 2013-07-03T11:01:05.953 回答