これは、ページの私の仕事を自動化するC#winformです。これまでのところすべてが機能しますが、app.configは動作します。ログイン情報をローカルに保存する(開発中に後で暗号化される)が、期限切れのときに資格情報を変更できるようにしたい。問題は、app.configファイルが変更された後、最初の起動時にのみアプリケーションがクラッシュすることです。私のフォームのapp.configは、アプリケーションがクラッシュした場合にのみ保存されます。
フォームの上部に、ここで定義されたコンフィギュレーション:第二のポップアップフォームを扱う
public Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
とログイン:
if (ConfigurationManager.AppSettings["userName"] != null)
{
//Sends credentials from appsettings
uName.SendKeys(ConfigurationManager.AppSettings["userName"]);
pWord.SendKeys(ConfigurationManager.AppSettings["userPass"]);
loginButton.Click();
}
else
{
//Displays modal login popup form.
using (popupForm popup = new popupForm())
{
//Displays the popup form to get login info.
popup.ShowDialog();
//Sets appsettings for credentials.
config.AppSettings.Settings.Add("userName", userUname);
config.AppSettings.Settings.Add("userPass", userPword);
config.Save();
uName.SendKeys(ConfigurationManager.AppSettings["userName"]);
pWord.SendKeys(ConfigurationManager.AppSettings["userPass"]);
loginButton.Click();
}
}
そして、それは動作しますが、それは、ヌル例外でクラッシュした後にのみuName.SendKeysの2番目のインスタンス(ConfigurationManager.AppSettings ["userName"]); else節にある。それがそこでクラッシュし、私は再構築せずに再度テストする限り、他のすべての実行は=を渡すでしょう!ブロックの上部に空の状態があり、正常にログインします。
私は間違っていますか?
EDIT1:自分の設定がユーザースコープではなく、実行時に変更できないアプリケーションスコープであることを認識しています。これをユーザースコープに変更するにはどうすればよいですか?