調試通過的解決方案部署到生產服務器出現錯誤—未將對象引用設置到對象的實例


今天將一個在測試環境中測試通過的WSP解決方案部署到生產環境時出現如下錯誤:

Event code: 3005 
Event message: 發生了未處理的異常。
Event time: 2012/3/5 15:11:36
Event time (UTC): 2012/3/5 7:11:36
Event ID: 53e61463a2404804abd431d6c573ebd7
Event sequence: 75
Event occurrence: 1
Event detail code: 0

Application information:
Application domain: /LM/W3SVC/1082957370/ROOT-1-129754049971294831
Trust level: WSS_Minimal
Application Virtual Path: /
Application Path: C:\inetpub\wwwroot\wss\VirtualDirectories\80\
Machine name: XXXX

Process information:
Process ID: 5832
Process name: w3wp.exe
Account name: User2

Exception information:
Exception type: NullReferenceException
Exception message: 未將對象引用設置到對象的實例。

Request information:
Request URL: http://XXXX/_layouts/XXXX.aspx?para=XX&IsDlg=1
Request path: /_layouts/XXXX.aspx
User host address: ***.***.***.***
User: User1
Is authenticated: True
Authentication Type: Negotiate
Thread account name: User2

Thread information:
Thread ID: 10
Thread account name: User2
Is impersonating: True
Stack trace: 在 Microsoft.Office.Server.WebControls.MetaDataNavTree.OnUnload(EventArgs e)
在 System.Web.UI.Control.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Control.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Control.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Control.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Control.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Control.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Control.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Control.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Control.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Page.UnloadRecursive(Boolean dispose)
在 System.Web.UI.Page.ProcessRequestCleanup()
在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
在 System.Web.UI.Page.ProcessRequest()
在 System.Web.UI.Page.ProcessRequest(HttpContext context)
在 ASP._layouts_hrmuserprofilemanagementwebpart_empinfomation_aspx.ProcessRequest(HttpContext context)
在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)


Custom event details:

首先測試環境和生產環境站點結構一模一樣,只是服務器場管理員,網站管理員等不同,另外此WSP解決方案里面有提升權限的代碼,生產環境中User1為普通用戶,User2為應用程序管理員,User3為該生產環境的服務器場管理員,並且可以確定不是代碼發生的錯誤,由此可判斷發生此錯誤定為用戶權限的問題。

從錯誤信息中可以看出,本來是User1發出的請求,但是經權限提升后進程是有User2在運行,則證明是User2權限不足,因為所有提升權限的代碼必須是場管理員來運行,所以User2必須要為場管理員中的一員。

現在就很清楚了,只要把User2加入到生產環境的場管理員里面,然后重啟一下IIS,就可以解決上述的問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM