2012-10-15 2 views
0

내 기계 : Win7에 32 비트, .NET 3 개 엑셀 파일을 생성하고 SMTP를 통해 하나씩을 보내 내가 .NET 4를 기반으로 콘솔 프로그램이 4작업 스케줄러는 콘솔 .NET 프로그램을 실행할 수 없습니다 제대로

섬기는 사람.

exe를 두 번 클릭하거나 cmd를 실행하면 올바르게 실행되고이 3 개의 Excel 파일로 3 개의 전자 메일이 전송됩니다.

하지만 작업 스케줄러에 EXE를 넣고 "실행"을 클릭하십시오. 첫 번째 이메일 만 전송되었으며 다른 두 개의 이메일은 어떻게 든 보낼 수 없습니다.

아이디어가 있으십니까?

Trace.WriteLine("Start creating mail object"); 

Trace.WriteLine(string.Format("Exception occured: {0}\r\n{1}", ex.Message, ex.StackTrace); 

돈 :

+0

작업 스케줄러에서 사용하는 사용자 계정을 확인합니다. 하나의 파일을 전송할 수 있으므로 도움이되지 않지만 시도해 볼 가치가 있습니다. – Ondra

+0

계정이 관리자 그룹에 있습니다. – DerekY

+0

프로그램에 몇 가지 로그를 추가하고 프로그램에서 두 번째 전자 메일을 보내려고 할 때 예외가 발생하는지 확인해야합니다. – Peter

답변

3

정말이 프로그램을 사용하면 다음과 같은 코드에서 중요한 단계에서 추적 문을 넣을 수 있습니다 작업 스케줄러에 의해 실행되는 경우에 무슨 일이 일어나고 있는지 알고 예외 처리기 안에 Trace.WriteLine을 넣는 것을 잊어 버려서 문제가 발생했는지 알 수 있습니다.

.config 파일 내에 리스너를 구성하여 이러한 명령문이 작성되는 위치를 제어 할 수 있습니다.

다음 예제에서는 EventLogTraceListener이라는 myListener이라는 개체를 Trace.Listeners 컬렉션에 추가합니다. initializeData 매개 변수는 EventLogTraceListener(String) 생성자로 전달되는 이벤트 로그 원본의 이름을 지정합니다.

<configuration> 
    <system.diagnostics> 
    <trace autoflush="false" indentsize="4"> 
     <listeners> 
     <add name="myListener" 
      type="System.Diagnostics.EventLogTraceListener" 
      initializeData="TraceListenerLog" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
</configuration> 

당신은 그것 때문에 사람의 추측이 시점에서 이것이 당신이 문제가 무엇인지 파악하는 데 도움이 Start>eventvwr

희망으로 이동하여 이벤트 표시기를 열 수 있습니다.

+0

Peter에게 감사드립니다. 하지만 Trace.WriteLine을 코드에 추가하면됩니다. 로그 파일에 오류나 예외가 없습니다. 프로그램이 제대로 실행되었습니다. – DerekY

+0

그래서 프로그램은 오류없이 SMTP 서버에 메일을 전송하지만 SMTP 서버는 3 개의 메일 중 2 개를 전달하지 않습니다. – Peter

+0

그건 내가 생각한거야. 그러나 SMTP Sever를 확인할 때 보낸 목록의 첫 번째 전자 메일 만 있습니다. – DerekY

0

문제점 : 공유 드라이브에서 SharePoint 문서 라이브러리로 문서를 업로드하려면 .net C# Console Application을 코딩하십시오. Service Acct로 로그인 할 때 실행 중 문제가 발견되지 않았 으면 파일은 문제없이 SP 문서 라이브러리로 전송됩니다. 그러나 작업 스케줄러를 통해 실행하면 "system.io.directorynotfoundexception ...."오류가 발생했습니다. 개인 계정을 사용할 때 서버에 로그인 한 상태에서 코드를 실행하거나 개인 일정을 사용하여 .exe를 실행하는 작업 스케줄러를 통해 문제가 발생하지 않았습니다.

분석 : 서비스 계정. 액세스 할 수있는 코드에서 매핑 된 드라이브에 기록됩니다. 그러나 작업 스케줄러는 매핑 된 드라이브 (즉, s : \ xxxxx Reports \)를 읽을 수 없습니다.

해결 방법 : 액세스 한 파일은 EMC VNX Windows 파일 공유에서 가져온 것이 었습니다. 문서 위치를 참조하는 콘솔 응용 프로그램 코드를 다음 경로로 변경했습니다. \ server.com \ vnxcifs01 \ Saved_xxxx_Report_Outputs \ xxxxxxxxxxx 예약 보고서. 이 변경 후 exe를 다시 빌드하면 작업 스케줄러가 매력처럼 작동합니다.

비슷한 환경에서 작업하는 데 도움이되기를 바랍니다.

관련 문제