1. ホーム
  2. c#

[解決済み] web.configに保存されているパスワードを"&"文字で解除する。

2023-07-18 19:47:23

質問

IIS 7.5 上で動作する ASP.NET MVC3 C# .NET アプリケーションを持っています。

ファイル共有にドキュメントの読み取り/書き込みを行うために、コード内で偽装した Windows NT サービス アカウントがあります。ユーザー ID はコードでコンパイルされ、サービス アカウントのパスワードは web.config ファイルに保存されます。

パスワードにはアンパサンドキャラクタ (例: p&ssword ).

これはサイトを壊しました。 サイトにアクセスすると、このようなエラーが表示されました:"申し訳ありませんが、リクエストの処理中にエラーが発生しました"。

以下は、パスワードを使用するコードです。

    var password = ConfigurationManager.AppSettings.Get(Common.SVC_PWD);

    bool isSuccess = LogonUser(
        @"my_svc_acct",
        "my.domain.net",
        password,
        LOGON32_LOGON_NEW_CREDENTIALS,
        LOGON32_PROVIDER_DEFAULT, ref token
    );

なぜこれがサイトが壊れる原因になるのでしょうか?

どのように解決するのですか?

パスワードが正しくエンコードされていないのではないでしょうか。 web.config ファイルで適切にエンコードされていないのではないでしょうか。覚えておいてください。 web.config はXMLファイルであるため、エンティティはエンコードされていなければならないことを忘れないでください。

の代わりに

my&password 

試す

my&password

などのサイトを利用することができます。 フリーフォーマットドットコム などのサイトを利用して、XML 文字列のエスケープ/アンスケープを行うことができます。