2011-09-13 5 views
0

ASPXページからweb.configファイルを更新..私は持っているC#の編集と私はキーがあるASPXページで編集するため利用できるようにする必要があり、私のweb.configファイルで2つのキーを持っている

<add key="atlasuser" value="username" /> 
<add key="atlaspass" value="password" /> 

私のASPXページのための背後にあるコードでこれを書い

Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); 
string u_user = txtUsername.Text; 
string u_pass = txtPassword.Text; 

string crmSID = Request.QueryString["SID"]; 

config.AppSettings.Settings["atlasuser"].Value = u_user; 
config.AppSettings.Settings["atlaspass"].Value = u_pass; 

config.Save(ConfigurationSaveMode.Full); 

私は、フィールドを編集し、拒否された私はの.tmpファイルへのアクセスを述べる解析エラーメッセージを取得し保存し、ソースには、関連するソース行を表示しない]をクリックするとエラーボックス。

私はWindows 7を実行しており、NETWORK SERVICEにディレクトリに対する完全な読み取り書き込み権限があることを確認しました。

誰でも手伝ってもらえますか?

+0

を呼び出すことはあなたのIISのユーザーを持っていますこれらの必要な権限? –

+0

web.config mintに書き込むとセッションがリセットされ、すべてのユーザーが再度ログインする必要があります。コンフィグレーションファイルがWeb自体から変更される場合は、コンフィグレーションが間違っているかもしれないし、利用できないサイトでは動かないかもしれないので、これを考慮する必要があります。 – Sascha

+0

web.configファイルはログイン情報を保存するのにはいい場所ではありません代わりにセッションで、http://www.codeproject.com/KB/aspnet/ExploringSession.aspx – Olle89

答えて

0

このmsdnの記事は、デフォルトの設定項目を開くためにヌル文字列を定義したいと思うようです。

http://msdn.microsoft.com/en-us/library/ms151456.aspx

あなたがない場合:

Configuration config = WebConfigurationManager.OpenWebConfiguration(null); 

これは読み取り/書き込みに設定を開くことができるようにする必要がありますが、他の人が言ってきたように、これは情報のこのタイプを保存するのに最適な場所ではありません

0

設定ファイルが読み取り専用に設定されていないことを確認しますか?

PS - ウェブ設定に一時的な情報を保存していると、デザインに問題がある可能性があります。

1

web.configは、ASP.NETアプリケーションから編集することはできません。 .NET Frameworkは、これは動作しませんIISで(ASP.NETアプリケーションのWeb.configである)アプリの設定ファイルではなく、実際に変更を保存/編集するためのAPIがあるため、すべてが単一考慮する提供理論的には

web.configが変更されたときIISアプリケーションが再起動されるため、.NETではこれを防ぐために保存を許可しません。

ASPXページから構成を変更する必要がある場合は、データベースまたは他の外部XMLファイルに保存し、必要に応じてこれらの設定を読み取る必要があります。

+2

私はこれが間違っていると確信しています。以前は、aspxページからweb.configを編集するための機能が書かれていました。 – ChrisPatrick

0

web.configファイル自体を編集できます。ちょうどあなたが下のアプリケーションを実行しているアカウントがアプリケーションディレクトリに書き込みできるようにするには、適切なファイルシステム権限を持っていることを確認してください:

void editWebConfig(string key, string newValue, string filePath) 
{ 
    var xml = new XmlDocument(); 
    xml.Load(filePath); 
    using(FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite)) 
    { 
     xml.SelectSingleNode("//configuration/appSettings/add[@key = '" + key + "']").Attributes["value"].Value = newValue; 
     xml.Save(fs); 
    } 
} 

次に、あなただけの

editWebConfig("atlasuser", txtUsername.Text, Server.MapPath(".") + "\\web.config");