2011-10-04 3 views
3

나는 실행 워크 플로가 진행 중 (있다, 나는 데이터베이스 분리 업그레이드를 수행 한 데이터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); 
    }); 
} 

를 기록하는 코드의 일반적인 조각을했다 셰어 2010 년에 (사용자 지정 승인 워크 플로와) 내 MOSS 2007 응용 프로그램을 마이그레이션 상태)를 공유 지점 2010에서 계속해야합니다. 그러나 불행히도 그런 일은 발생하지 않습니다, 내 복제기 활동은 오류를 던졌습니다. 공유 지점 로그에서 이것을 찾았습니다.

System.IO.IOException : 장치가 준비되지 않았습니다. System.IO.FileStream.Init에서 System.IO._ Error.WinIOError (INT32의 errorCode, 문자열 maybeFullP의 ATH)
에서
(문자열 P는 ATH, 대한 fileMode 모드, FileAccess 액세스, INT32 권한, 부울 useRights, 파일 공유 점유율, INT32 BUFFERSIZE, FileOptions 옵션, 보안
특성 초 바인드합니다, 문자열 인 msgp의 ATH, 부울 bFromProxy) System.IO.FileStream..ctor에서
(문자열 P는 ATH, 대한 fileMode 모드, FileAccess 액세스, 파일 공유, 공유, INT32 BUFFERSIZE, FileOptions 옵션, 문자열 msgP ath, 부울 bFromProxy)
at System.IO.FileStream ..ctor (문자열 p ath, FileMode 모드, FileAccess 액세스, FileShare 공유, Int32 bufferSize, FileOptions 옵션)
at 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 문자열 컨텐츠 인코딩 인코딩)에서 Microsoft.SharePoint.Utilities.SecurityContext xyz.Utils.MailNotific ations.DisplayClass1._0()에서 Microsoft.SharePoint.SPSecurity.DisplayClass4._2
()
에서
.RunAsProcess (CodeToRunElev ated secureCode)
(Microsoft.SharePoint.SPSecurity.RunWithElev atedPrivileges (WaitCallback secureCode, Object param))
Microsoft.SharePoint. SPSecurity.RunWithElev atedPrivileges (CodeToRunElev을 ated 안전 코드) xyz.Utils.MailNotific ations.WriteToLog (문자열 logInfo)에서
xyz.Utils.MailNotific ations.SPNotific의 ATION에서
(SPWeb APPLIC ATION, 문자열 제목, 문자열 승인, 문자열에서는 HTMLBody) System.Workflow.Activities에서 System.Workflow.ComponentModel.Activity.RaiseEvent에서 xyz.WF.Approval.ApprovalWorkFlow.logError_ExecuteCode (객체 송신자있는 EventArgs E)
(DependencyProperty에 dependencyEvent 오브젝트 송신자있는 EventArgs E)
에서
. CodeActivity.Execute (ActivityExecutionContext executionContext)
at System.Workflow.ComponentModel.ActivityExecutor 1.Execute(T activity, ActivityExecutionContext executionContext)
at System.Workflow.ComponentModel.ActivityExecutor
1.Execu 테 (활동 활동 ActivityExecutionContext를 ExecutionContext에) System.Workflow.ComponentModel.ActivityExecutorOper ation.Run (IWorkflowCoreRuntime workflowCoreRuntime)에서
는 System.Workflow.Runtime.Scheduler.Run()에서
는 간단히

이 보인다 입출력 예외 다. 로그 폴더 위치를 공유했습니다. 파일 액세스 권한이 배제되었습니다. 새 워크 플로가 시작될 때 응용 프로그램이 올바르게 작동합니다.

답변

5

무엇이 LOG_FILE_PATH 및 LOG_FILE_FORMAT입니까?

IO 예외는 다른 방법으로 비어 있거나 잘못된 경우 발생할 수 있습니다.

+0

나는 나의 web.config 파일에서 다음이 <키 = "LogFileFormat"값을 추가 = "MMyyyyHH"/><= "D 키 ="LogFilePath에 "값을 추가 : \ 프로젝트 \ XYZ 로그 \를 \ "/> – Shankar

+0

새 워크 플로가 시작되면 로그 데이터가 제대로 표시됩니다. 문제는 MOSS 2007에서 시작된 실행중인 워크 플로를 이동하는 경우입니다. – Shankar

+0

MOSS 2007 및 SharePoint 2010에서 다른 로그 파일 경로를 설정했습니다. 신청. 새 환경에서 MOSS 2007 컴퓨터의 폴더 구조를 복제했으며 구성 파일에 로그 파일 경로 위치를 유지했습니다. 그것은 효과가있다! 당신의 리드를 가져 주셔서 감사합니다! – Shankar

2

이동식 미디어를 너무 자주 참조하려는 경우에도 발생할 수 있습니다. 내 경우에는 DriveInfo.GetDrives() 메서드에서 정보를 가져 와서 디스크의 나머지 공간을 표시하려고했습니다.

몇 바이트를 장치에 복사하자마자 코드가 호출되었습니다. 그러므로, 그렇지 않은 경우를 확인하는 것이 좋습니다. 예외 처리를 수행하고 준비가되었을 때 세부 정보를 얻도록하십시오.

0

관련이 있는지는 모르겠지만 작업으로 예약 된 콘솔 앱이 있었고 명령 줄에서 콘솔 앱을 수동으로 실행하면 "장치가 준비되지 않았습니다"라는 작업이 계속 실패했습니다.

"이 응용 프로그램을 실행하는 데 오류가 발생했습니다. 먼저 .NET Framework의 다음 버전 중 하나를 설치해야합니다."

enter image description here

관련 문제