次の例外が発生します。レジストリ編集のイベントログでAsp.netアカウントにフルコントロールを与えました。
[SecurityException:ソースは見つかりませんでしたが、一部またはすべてのイベントログを検索できませんでした。アクセスできないログ:セキュリティ。]
System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate) +664 System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) +109 System.Diagnostics.EventLog.SourceExists(String source) +14 Microsoft.ApplicationBlocks.ExceptionManagement.DefaultPublisher.VerifyValidSource() +41
これはサーバー上の設定の問題が原因だと思いますか?
EventLog.SourceExists
は、HKLM\SYSTEM\CurrentControlSet\services\eventlog
のサブキーを列挙して、指定された名前のサブキーが含まれているかどうかを確認します。コードを実行しているユーザーアカウントに、ターゲットソースを見つける前にアクセスしようとするサブキー(この場合はSecurity
サブキー)への読み取りアクセス権がない場合、説明したような例外が表示されます。
このような問題を処理するための通常のアプローチは、インストール時に(管理者アカウントで) イベントログソースを登録する を実行し、実行時に存在することを前提とします。イベントログソースは実行時に実際には存在しません。
同じ例外がありました。私の場合、管理者権限でコマンドプロンプトを実行する必要がありました。
[スタート]メニューから[コマンドプロンプト]を右クリックし、[管理者として実行]を選択します。
私にとって、このエラーはコマンドプロンプトによるもので、管理者権限で実行されていませんでした。コマンドプロンプトを右クリックして、「管理者として実行」と言う必要があります。
サービスをインストールまたはアンインストールするには、管理者の役割が必要です。
「管理者として」開発者コマンドラインを起動します。このアカウントにはセキュリティログへのフルアクセスがあります
私には役に立たなかった。
新しいキーと文字列値を作成し、それを機能させることができました
Key= HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\<Your app name>\
String EventMessageFile value=C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll
IISでSenseNet TaskManagement Webサイトの新規インストールを実行している場合(WebPIではなくソースコードから)、通常SignalR通信に関連するこのメッセージが表示されます。 @ nicole-caliniouが指摘しているように は、レジストリ内のキー検索が失敗したためです。
SenseNet TaskManagement v1.1.0でこれを解決するには、まずweb.configファイルでレジストリキー名を見つけます。デフォルトでは「SnTaskWeb」です。
<appSettings>
<add key="LogSourceName" value="SnTaskWeb" />
レジストリエディターregedit.exe
を開き、HKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTask
に移動します。 SnTaskを右クリックして、New Key
を選択し、上記の構成のキーにSnTaskWeb
という名前を付けます。次に、SnTaskWeb
要素を右クリックして、New Expandable String Value
を選択します。名前はEventMessageFile
であり、値データはC:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll
でなければなりません。
キーワード:signalr、sensenet、regedit、permissions
私にとってはiisresetだけでした(cmdを管理者として実行-> iisreset)。たぶん誰かが試してみることができます。
アクセスできないログ:セキュリティ
新しいイベントソースには、セキュリティ(読み取り時に管理者権限が必要)を含むすべてのログで一意の名前が必要です。
そのため、アプリでソースを作成するにはadmin privilegeが必要になります。しかし、それはおそらくやり過ぎです。
イベントソースを自由に作成するために、これをpowershell scriptと書きました。 *.ps1
として保存し、any特権で実行すると、それ自体が昇格します。
# CHECK OR RUN AS ADMIN
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}
# CHECK FOR EXISTENCE OR CREATE
$source = "My Service Event Source";
$logname = "Application";
if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
[System.Diagnostics.EventLog]::CreateEventSource($source, $logname);
Write-Host $source -f white -nonewline; Write-Host " successfully added." -f green;
}
else
{
Write-Host $source -f white -nonewline; Write-Host " already exists.";
}
# DONE
Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');