2011-10-04 83 views
3

我遷移我的MOSS 2007應用程序(通過自定義審批工作流),以2010年的Sharepoint我有這個通用的代碼記錄數據爲什麼在SharePoint 2010遷移後此文件寫入失敗?

private void WriteToLog(String logInfo) 
{ 
    SPSecurity.RunWithElevatedPrivileges(delegate() 
    { 
     File.AppendAllText(LOG_FILE_PATH + string.Format("{0:" + LOG_FILE_FORMAT + "}", DateTime.Now) + ".log", logInfo); 
    }); 
} 

我做了一個數據庫分離的升級,也有運行的工作流(在進步狀態)與之前應該繼續在SharePoint 2010中保持一致的環境。但不幸的是,這並未發生,我的複製器活動發生了錯誤。我發現這在共享點日誌中

System.IO.IOException:設備未準備好。
at System.IO._ Error.WinIOError(Int32 errorCode,String maybeFullP ath)
at System.IO.FileStream.Init(String p ath,FileMode mode,FileAccess access,Int32 rights,Boolean useRights,FileShare share, Int32 bufferSize,FileOptions選項,SECURITY
atTRIBUTES sec attrs,String msgP ath,Boolean bFromProxy)
at System.IO.FileStream..ctor(String p ath,FileMode mode,FileAccess訪問,FileShare共享,Int32 bufferSize,FileOptions選項,串msgP ATH,布爾bFromProxy)
在System.IO.FileStream..ctor(列p ATH,的FileMode模式,FileAccess的訪問,文件共享份額,緩衝區大小的Int32,FileOptions選項)
在System.IO.StreamW riter..ctor(String p ath,布爾附加,編碼編碼,int32 bufferSize)
at System.IO.StreamWriter..ctor(String p ath,布爾附加,編碼編碼)
at System.IO.File.AppendAllText (列p ATH,字符串內容,編碼方式進行編碼)
在xyz.Utils.MailNotific ations.DisplayClass1._0()
在Microsoft.SharePoint.SPSecurity.DisplayClass4._2()
在Microsoft.SharePoint.Utilities.SecurityContext .RunAsProcess(CodeToRunElevel SecureCode)
at Microsoft.SharePoint.SPSecurity.RunWithElev atedPrivileges(WaitCallback secureCode,Object param)
at Microsoft.SharePoint。 SPSecurity.RunWithElev atedPrivileges(CodeToRunElev ated安全碼)
在xyz.Utils.MailNotific ations.WriteToLog(字符串LOGINFO)
在xyz.Utils.MailNotific ations.SPNotific通貨膨脹(的SPWeb方面的應用中,字符串對象,字符串審批,字符串htmlBody)
在xyz.WF.Approval.ApprovalWorkFlow.logError_ExecuteCode(對象發件人,EventArgs的)
在System.Workflow.ComponentModel.Activity.RaiseEvent(的DependencyProperty dependencyEvent,對象發件人,EventArgs的)
在System.Workflow.Activities。 CodeActivity.Execute(ActivityExecutionContext executionContext)
at System.Workflow.ComponentModel.ActivityExecutor 1.Execute(T activity, ActivityExecutionContext executionContext)
at System.Workflow.ComponentModel.ActivityExecutor
1.Execu TE(活動活性,ActivityExecutionContext的ExecutionContext)
在System.Workflow.ComponentModel.ActivityExecutorOper ation.Run(IWorkflowCoreRuntime workflowCoreRuntime)
在System.Workflow.Runtime.Scheduler.Run()

簡言之,這似乎是一個IO異常。我已共享日誌文件夾位置,文件訪問權限被排除,當新工作流程啓動時,應用程序工作得很好。

回答

5

什麼是LOG_FILE_PATH和LOG_FILE_FORMAT?

如果其他方式爲空或無效,則可能導致IO異常。

+0

我在web.config文件具有這些作爲<添加鍵= 「LogFileFormat」 值= 「MMyyyyHH」/><添加鍵= 「LOGFILEPATH」 值=「d:\項目\ XYZ \登錄\」 /> – Shankar

+0

當一個新的工作流啓動後,我得到的日誌數據properly.The問題是唯一的運動是在MOSS開始運行的工作流,當2007年 – Shankar

+0

我不同的日誌文件路徑在我的MOSS 2007和SharePoint 2010的設置應用。我複製的文件夾結構從我的MOSS 2007的機器在新的環境,我保留了配置文件中的日誌文件路徑位置。有效!謝謝你的帶領! – Shankar

2

,如果你想指可移動介質過於頻繁它甚至可以發生。就我而言,我試圖通過從DriveInfo.GetDrives()方法中獲取信息來顯示磁盤中的剩餘空間。

只要將幾個字節複製到設備中,代碼就會被調用。所以,最好檢查一下情況是否如此。做好異常處理並讓它在準備好時獲得細節。

0

如果這是相關的,但我有計劃的任務控制檯應用程序和任務保持着「該設備未準備好」失敗的時候我去手動運行命令行控制檯應用程序,我不知道我結果表明,

「運行此應用程序,首先必須安裝.NET Framework等等等等以下版本的一個」錯誤。

enter image description here