2017-11-14 1 views
0

Ich wurde MVC Web App erstellt, um Ereignis auf Google Kalender zu buchen. Nach vielen Versuchen hat es in localhost gut funktioniert. aber heute, wenn ich Gastgeber es in einem Online-iis Webserver es folgende Fehlermeldung zu geben, (all Google-Einstellungen in Entwickler-Konto richtig gemacht)Google Kalender-API funktioniert nicht in IIS-Server nach dem Hosten

hier mein Code:

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(); }); 

es auf localhost gearbeitet wurde mit kein Problem, aber jetzt, wenn es gehostet wird unter IIS Server-Hosting, es unten Stack-Trace Fehlermeldung geben: aufgetreten

ein oder mehr Fehler. mscorlib bei System.Threading.Tasks.Task`1.GetResultCore (Boolean waitCompletionNotification) bei LibTsService.ServiceRequests.GoogleCalendar.PTOCalendarUpdate.UpdateClendar (Int32 complaintId, IDbConnection & con) bei LibTsService.ServiceRequests.SrStatusUpdateService.DeclineApprovePto (Boolean isStaffMember) bei LibTsService.ServiceRequests.SrStatusUpdateService.Any (SrStatusUpdate Anfrage) Der Zugriff wird verweigert Systems bei System.Diagnostics.Process.StartWithShellExecuteEx (Process Startinfo) bei System.Diagnostics.Process.Start (Process Startinfo) bei Google.Apis.Auth. OAuth2.LocalServerCodeReceiver.d__6.MoveNext() --- Ende des Stack-Trace vom vorherigen Speicherort, an dem die Ausnahme ausgelöst wurde --- unter System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() um System.Runtime.CompilerServices.TaskAwaiter. HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) bei Google.Apis.Auth.OAuth2.AuthorizationCodeInstalledApp.d__8.MoveNext() --- Ende der Stack-Trace aus früheren Stelle, wo Ausnahme ausgelöst wurde --- bei System.Runtime.ExceptionServices.ExceptionDispatchInfo .Throw() um System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task Aufgabe) um Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__4.MoveNext() --- Ende der Stack-Trace aus früheren Stelle, wo Ausnahme ausgelöst wurde --- bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) bei Google .Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__1.MoveNext() Exception.ToString(): System.AggregateException: Ein oder mehrere Fehler sind aufgetreten. ---> System.ComponentModel.Win32Exception: Zugang bei System.Diagnostics.Process.StartWithShellExecuteEx (Process Startinfo) bei System.Diagnostics.Process.Start (Process Startinfo) bei Google.Apis.Auth.OAuth2 verweigert. LocalServerCodeReceiver.d__6.MoveNext() --- Ende der Stack-Trace aus früheren Stelle, wo Ausnahme ausgelöst wurde --- bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task Task) um Google.Apis.Auth.OAuth2.AuthorizationCodeInstalledApp.d__8.MoveNext() --- Ende des Stack-Trace von früheren Speicherort, wo Ausnahme ausgelöst wurde --- um System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() um System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) bei Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__4.MoveNext() --- Ende der Stack-Trace aus früheren Stelle, wo Ausnahme ausgelöst wurde --- bei System.Runtime.ExceptionServices.ExceptionDispatchInfo .Throw() bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) bei Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__1.MoveNext() --- Ende der inneren Ausnahmestapelüberwachung ---

Was ist der Grund dafür, dass dies nicht im Online-Host funktioniert?

+1

Mögliches Duplikat von [Google Auth läuft in Visual Studio, sondern hängt, wenn IIS im Einsatz] (https://stackoverflow.com/questions/43064047/google-auth-runs-in-visual-studio-but- hängt-wenn-im-deployed-to-iis) – DaImTo

+0

erhalten Sie erfolgreich einfügen lokal mit diesem? var insertevent = calservice.Events.Insert (KalenderEvent, URL); var requestedInsert = insertevent.Execute(); Mir ist aufgefallen, dass Sie einen kleinen Unterschied zu der Aufgabe haben, die ich in der Vergangenheit verwendet habe. – NRW

Antwort

0

Ich lief ähnliche Problem durch. Die Bibliothek unterstützt eine andere Möglichkeit der Authentifizierung für die Verwendung mit Web Apps. Ich ändere meinen Code ein wenig. Hier ist das Code-Snippet.

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, 
     }); 
Verwandte Themen