Wdrażając ASP.NET do chmury Windows Azure, aplikacja daje błąd podczas pracy w chmurze
Usiłuję wdrożyć aplikację ASP.NET w chmurze Windows Azure. Korzystam z interfejsu API Google dla jednego z połączeń w aplikacji. Gdy to zrobię, pojawia się następujący błąd:
System.UnauthorizedAccessException: odmowa dostępu do ścieżki „Google.Apis.Auth”.
ASP.NET nie jest upoważniony do dostępu do żądanego zasobu. Rozważ przyznanie praw dostępu do zasobu tożsamości tożsamości żądania ASP.NET. ASP.NET ma podstawową tożsamość procesu (zwykle {MACHINE} ASPNET w IIS 5 lub usługę sieciową w IIS 6 i IIS 7 oraz skonfigurowaną tożsamość puli aplikacji w IIS 7.5), która jest używana, jeśli aplikacja nie podszywa się. Jeśli aplikacja podszywa się pod tożsamość, tożsamością będzie użytkownik anonimowy (zwykle IUSR_MACHINENAME) lub uwierzytelniony użytkownik żądania.
Aby udzielić ASP.NET dostępu do pliku, kliknij plik prawym przyciskiem myszy w Eksploratorze plików, wybierz „Właściwości” i wybierz kartę Zabezpieczenia. Kliknij „Dodaj”, aby dodać odpowiedniego użytkownika lub grupę. Zaznacz konto ASP.NET i zaznacz pola wyboru żądanego dostępu. ”
Próbowałem to zbadać, ale wszystkie sugestie mówią o zmianie ustawień serwera IIS, do których, jak sądzę, nie mam dostępu, ponieważ działa w chmurze. Czy ktoś może pomóc?
EDYTUJ: tutaj jest kod funkcji, która podaje błąd:
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`