Beim Bereitstellen von ASP.NET in der Windows Azure-Cloud gibt die Anwendung einen Fehler aus, wenn sie in der Cloud ausgeführt wird
Ich versuche, eine ASP.NET-Anwendung in der Windows Azure-Cloud bereitzustellen. Ich verwende Google API für einen der Aufrufe in der Anwendung. Wenn ich das mache, erhalte ich folgende Fehlermeldung:
System.UnauthorizedAccessException: Der Zugriff auf den Pfad "Google.Apis.Auth" wird verweigert. "
ASP.NET ist nicht berechtigt, auf die angeforderte Ressource zuzugreifen. Erwägen Sie, der ASP.NET-Anforderungsidentität Zugriffsrechte auf die Ressource zu gewähren. ASP.NET verfügt über eine Basisprozessidentität (normalerweise {MACHINE} \ ASPNET unter IIS 5 oder Network Service unter IIS 6 und IIS 7 sowie die konfigurierte Anwendungspoolidentität unter IIS 7.5), die verwendet wird, wenn die Anwendung keine Identität annimmt. Wenn sich die Anwendung als Benutzer ausgibt, ist die Identität der anonyme Benutzer (normalerweise IUSR_MACHINENAME) oder der authentifizierte Anforderungsbenutzer. "
Um ASP.NET-Zugriff auf eine Datei zu gewähren, klicken Sie mit der rechten Maustaste auf die Datei im Datei-Explorer, wählen Sie "Eigenschaften" und wählen Sie die Registerkarte "Sicherheit". Klicken Sie auf "Hinzufügen", um den entsprechenden Benutzer oder die entsprechende Gruppe hinzuzufügen. Markieren Sie das ASP.NET-Konto und aktivieren Sie die Kontrollkästchen für den gewünschten Zugriff. "
Ich habe versucht, dies zu untersuchen, aber in allen Vorschlägen geht es um das Ändern der IIS-Servereinstellungen, auf die ich meines Erachtens keinen Zugriff habe, da diese in der Cloud ausgeführt werden. Kann jemand helfen?
BEARBEITEN: Hier ist der Code für die Funktion, die den Fehler ausgibt:
Async Function SpecialTest() As Task(Of String)
Dim credential As UserCredential
Dim clientSecretsPath As String = Server.MapPath("~/App_Data/client_secret.json")
Dim scopes As IList(Of String) = New List(Of String)()
scopes.Add(CalendarService.Scope.Calendar)
Dim stream As FileStream = New FileStream(clientSecretsPath, System.IO.FileMode.Open, System.IO.FileAccess.Read)
Using stream
credential = Await GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets, scopes, "user3", CancellationToken.None)
End Using
Dim baseInitializer = New BaseClientService.Initializer()
With baseInitializer
.HttpClientInitializer = credential
.ApplicationName = "P1"
End With
Dim service = New CalendarService(baseInitializer)
Dim Calendars = (Await service.CalendarList.List().ExecuteAsync()).Items()
Dim toReturn As String = "{""items"": ["
For Each firstCalendar As CalendarListEntry In Calendars
If firstCalendar IsNot Nothing Then
' Get all events from the first calendar.
Dim calEvents = Await service.Events.List(firstCalendar.Id).ExecuteAsync()
' DO SOMETHING
Dim items = calEvents.Items
'Return JsonConvert.SerializeObject(calEvents)
For Each ite As Google.Apis.Calendar.v3.Data.Event In items
If Not (ite.Location Is Nothing) And Not (ite.Start Is Nothing) Then
Dim tst = ite.Start.DateTime
toReturn = toReturn + " [""" + Date.Parse(ite.Start.DateTime).ToShortDateString + """" + "," + """" + ite.Location + """" + "," + """" + ite.Start.DateTime + """" + "," + """" + ite.Start.DateTime + """" + "," + """""],"
End If
Next
End If
Next
toReturn = toReturn.Substring(0, toReturn.Length - 1)
Return toReturn + "]}"
End Function`