摘要:如何配置Web服務,以便始終可以寫入事件日誌(無論調用者)? 詳細信息: 我有一個Web服務,它將條目寫入應用程序日誌。我通過一個小控制檯應用程序爲此建立了事件源,並且我認爲我理解了這一部分內容。當我測試這個WS時,我看到我成功地將我的條目寫入事件日誌。匿名用戶調用Web服務時,無法寫入事件日誌
承載此WS的虛擬目錄確實是而不是允許匿名訪問並且僅配置爲集成Windows身份驗證。
我有一個Web客戶端應用程序調用此Webservice。當Web客戶端站點僅配置爲集成Windows身份驗證時,根據需要調用Webservice會導致日誌記錄。
但是,如果我將Web客戶端網站更改爲允許匿名訪問,那麼Webservice會嘗試將結果記錄在InvalidOperationException中。我忽略它,但不管它如何被調用,知道如何在Web服務中記錄日誌都會很好。這裏有一點我的代碼:以上
public FileService()
{
try
{
if (!EventLog.SourceExists(g_EventSource))
EventLog.CreateEventSource(g_EventSource, g_EventLog);
System.Security.Principal.WindowsIdentity UserIdentityInfo;
UserIdentityInfo = System.Security.Principal.WindowsIdentity.GetCurrent();
string AuthType = UserIdentityInfo.AuthenticationType;
if (AuthType == "Kerberos")
{ engineWSE.Credentials = System.Net.CredentialCache.DefaultCredentials; }
else
{ engineWSE.Credentials = new System.Net.NetworkCredential("u", "p", "domain"); }
EventLog.WriteEntry(g_EventSource,
"Caller: " + UserIdentityInfo.Name +
" AuthType: " + UserIdentityInfo.AuthenticationType,
EventLogEntryType.Information, 1);
}
catch (InvalidOperationException e)
{
// do nothing to ignore: "Cannot open log for source 'myAppSourceName'. You may not have write access."
}
}
構造函數的例子是在這裏有點做作(我主要感興趣的是能寫出來的Web服務相關的錯誤信息)。
我希望有一種方法來配置Web服務虛擬目錄(或其中的代碼),以便可以進行日誌記錄,而不管它如何被調用。
謝謝。根據您的答案,我會重新仔細閱讀我的問題。我確實在承載我的web服務的網站的web.config中有和。我需要這個,因爲我需要INTRAnet webclient的身份(請參閱我如何測試身份驗證類型並相應地傳遞憑據)。所以,你是說因爲在web.config中「模仿」,它表現得好像我爲我的web服務網站檢查了「匿名訪問」?我想你會說是的。鑑於我的目標,無論如何都要配置此功能以便在任何情況下進行日誌記錄? –
2009-07-23 17:59:53