2017-11-14 6 views
0

Google 캘린더에 이벤트를 게시하기 위해 MVC 웹 앱을 만들었습니다. meany 시도 후에 그것은 localhost에서 잘 동작합니다.호스팅 후 IIS 서버에서 Google 캘린더 API가 작동하지 않습니다.

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                  new ClientSecrets 
                  { 
                   ClientId = siteinfoCalendar.ClientId, 
                   ClientSecret = siteinfoCalendar.ClientSecret, 

                  }, 
                  new[] { CalendarService.Scope.Calendar }, 
                  townName, 
                  CancellationToken.None, 
                  new DBDataStotre()).Result; 

        // Create Google Calendar API service. 
        var service = new CalendarService(new BaseClientService.Initializer() 
        { 
         HttpClientInitializer = credential, 
         ApplicationName = siteInfo.TownName, 
        }); 
        string description = calendarInfo.FirstOrDefault().Issue.Replace("&amp;", "").Replace("&lt;", "").Replace("&gt;", "").Replace("&quot;", "").Replace("&apos;", "").Replace("<br />", "").Replace("&nbsp;", ""); 
        Event newPtoEvent = new Event(); 
        newPtoEvent.Summary = calendarInfo.FirstOrDefault().UserName + " on " + leaveDescription.Trim() + " leave."; 
        newPtoEvent.Description = calendarInfo.FirstOrDefault().Issue; 
        newPtoEvent.Start = new EventDateTime(); 
        newPtoEvent.Start.DateTime = calendarInfo.FirstOrDefault().StartDateLocalTime; 
        newPtoEvent.End = new EventDateTime(); 
        newPtoEvent.End.DateTime = calendarInfo.FirstOrDefault().EndDateLocalTime; 

        var createCalendarEvent = service.Events.Insert(newPtoEvent, siteinfoCalendar.CalendarID); 

        Task.Run(() => { createCalendarEvent.Execute(); }); 

그것으로 로컬 호스트에 근무 :하지만 오늘은 언제

여기

내 코드 (제대로 개발자 계정의 모든 Google 설정), 그것은 다음과 같은 오류 메시지가 제공하는 온라인 IIS 웹 서버에 호스트 문제가 없지만 iis 호스팅 서버에서 호스팅 될 때 스택 추적 오류 메시지가 표시됩니다.

하나 이상의 오류가 발생했습니다. LibTsService.ServiceRequests.GoogleCalendar.PTOCalendarUpdate.UpdateClendar (INT32 complaintId, IDbConnection을 & 사기) LibTsService.ServiceRequests.SrStatusUpdateService.DeclineApprovePto에서 (부울에서 System.Threading.Tasks.Task`1.GetResultCore (부울 waitCompletionNotification)에서 mscorlib에 LibTsService.ServiceRequests.SrStatusUpdateService.Any (SrStatusUpdate 요청) 액세스에 isStaffMember는) 에서 System.Diagnostics.Process.Start에서 System.Diagnostics.Process.StartWithShellExecuteEx (ProcessStartInfo를 startInfo) (ProcessStartInfo를 startInfo)에서 시스템을 거부 Google.Apis.Auth. OAuth2.LocalServerCodeReceiver.d__6.MoveNext() --- 예외가 throw 된 이전 위치의 스택 추적 끝 --- 에서 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter. Google.Apis.Auth.OAuth2.AuthorizationCodeInstalledApp.d__8.MoveNext() 에서 HandleNonSuccessAndDebuggerNotification (작업 작업) --- 예외가 System.Runtime.ExceptionServices.ExceptionDispatchInfo에서 --- 던져진 이전 위치에서 스택 추적의 끝 .Throw() at 에서 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (작업 작업) Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__4.MoveNext() --- 예외가 구글 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification에서 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() (작업 작업)에서 --- 던져진 이전 위치에서 스택 추적의 끝() : System.AggregateException : 하나 이상의 오류 이 발생했습니다. ---> System.ComponentModel.Win32Exception : 액세스가 Google.Apis.Auth.OAuth2에서 System.Diagnostics.Process.Start (ProcessStartInfo를 startInfo)에서 System.Diagnostics.Process.StartWithShellExecuteEx (ProcessStartInfo를 startInfo)에서 거부됩니다. LocalServerCodeReceiver.d__6.MoveNext() --- 예외가 throw 된 이전 위치의 스택 추적 끝 --- 에서 의 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification 작업 작업)에서 Google.Apis.Auth.OAuth2.AuthorizationCodeInstalledApp.d__8.MoveNext() --- 예외가 throw 된 이전 위치에서 스택 추적 끝 --- 에 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()가 표시됩니다. System.Runtime.CompilerServices.TaskAwaiter. Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__4.MoveNext() 에서 HandleNonSuccessAndDebuggerNotification (작업 작업) --- 예외가 System.Runtime.ExceptionServices.ExceptionDispatchInfo에서 --- 던져진 이전 위치에서 스택 추적의 끝 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification에서 .Throw() Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__1.MoveNext() 에서 (작업 작업) --- 내부 예외 스택 추적의 끝 ---

온라인 호스트에서 작동하지 않는 이유는 무엇입니까?

+1

가능한 복제 [구글 인증 Visual Studio에서 실행되지만 IIS에 배포 할 때 중단 (https://stackoverflow.com/questions/43064047/google-auth-runs-in-visual-studio-but- – DaImTo

+0

이걸로 로컬에 성공적으로 삽입 할 수 있습니까? var insertevent = calservice.Events.Insert (calendarEvent, URL); var requestedInsert = insertevent.Execute(); 사용중인 작업과 이전에 사용했던 작업의 차이가 있음을 확인했습니다. – NRW

답변

0

비슷한 문제가 발생했습니다. 라이브러리는 Web Apps에서 사용하기위한 다른 인증 방법을 지원합니다. 나는 내 코드를 조금 수정했다. 다음은 코드 스 니펫입니다.

ClientSecrets cs = new ClientSecrets 
     { 
      ClientId = "Put_Your_Client_Id_Here", 
      ClientSecret = "Put_Your_Client_Secret_Here" 
     }; 
     string ApplicationName = "Google Calendar API .NET Quickstart"; 
     //Path where Json File is stored 
     FileDataStore store = new FileDataStore(System.Web.HttpContext.Current.Server.MapPath("~/Uploads/Template/credentials/calendar-dotnet-quickstart.json/calendar-dotnet-quickstart.json"), true); 
     UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(cs, Scopes, "user", CancellationToken.None, store).Result; 
     var service = new CalendarService(new BaseClientService.Initializer() 
     { 
      HttpClientInitializer = credential, 
      ApplicationName = ApplicationName, 
     });