1

アクション方法

public ActionResult Index()
 {
  ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
  LogError("lok", "lok2", "lok3");
  return View();
 }

LogError メソッド

private void LogError(string transactionId, string sAmountPaid, string deviceId)
        {
            // Creating the source, which will generate error
            if (!EventLog.SourceExists("MyApplication"))
            {
                //Creating log, where error will be logged
                EventLog.CreateEventSource("MyApplication", "MyLog");
            }

            // Creating object of EventLog to log error
            var myAppLog = new EventLog { Source = "MyApplication" };

            //Writing error to log
            myAppLog.WriteEntry(transactionId + sAmountPaid + deviceId);
        }

ホームページを実行すると、常に「エラー。リクエストの処理中にエラーが発生しました」と表示されます。これは、「イベント ビューアー」でログを作成できないことが原因であると思われます。ローカル ホストで上記のコードを実行すると、正常に動作します。しかし、Windows Server 2012 の IIS サーバーに公開すると、上記のエラーが発生します。

私の質問:イベント ビューアーでログを作成するための任意の種類のアクセス許可を有効にする必要があります。私の IIS は Windows Server 2012 で動作しています。

4

2 に答える 2

3

これは以前に尋ねられました。次のリンクはその議論へのリンクです。

Windows Server 2008 IIS7 上の ASP.NET でのイベント ログへの書き込み

Windows イベント ログに書き込む権限をアプリケーションに付与する必要があります。

ただし、いくつかの理由からお勧めしません。

  1. スケーリングしません。
  2. アプリケーションが適切に保護されていない場合に悪用される可能性のある攻撃ベクトルをサーバー自体に導入します。
  3. アプリケーションを「共有ホスティング」ホスト ソリューションでホストすることはできません。これらを許可するには、OS 自体にアクセスする必要があります (または cPanel のようにこれを許可するシステム)。

Windows イベント ログにログインする代わりの方法:

  1. データベースまたはファイルにログインする
  2. 分散アーキテクチャまたはエンタープライズ レベルのシステムでは、データを集約システムに渡すキュー システムにイベント ログ エントリを送信します。
于 2013-08-02T23:32:13.630 に答える
1

名前は一意である必要があるため、イベント ソースを作成するには管理者権限が必要です。また、セキュリティを含め、すべてのレジストリ項目を確認する必要があるかどうかを確認する必要があります。ただし、IIS アカウントにローカル管理者を与えたいとは思いません。これを行う方法 (デスクトップ アプリの場合) は、インストーラーが (管理者として) イベント ソースを作成し、アプリはそこから読み書きするだけです。

于 2013-08-02T09:11:26.807 に答える