Я пытаюсь развернуть приложение ASP.NET в облаке Windows Azure. Я использую Google API для одного из вызовов в приложении. Когда я это сделаю, я получаю следующую ошибку:
System.UnauthorizedAccessException: доступ к пути 'Google.Apis.Auth' запрещен.
ASP.NET не авторизован для доступа к запрошенному ресурсу. Рассмотрите возможность предоставления прав доступа к ресурсу удостоверению запроса ASP.NET. ASP.NET имеет базовое удостоверение процесса (обычно {MACHINE} \ ASPNET в IIS 5 или сетевая служба в IIS 6 и IIS 7, а также настроенное удостоверение пула приложений в IIS 7.5), которое используется, если приложение не олицетворяет. Если приложение олицетворяет через, удостоверением будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный пользователь запроса.
Чтобы предоставить ASP.NET доступ к файлу, щелкните файл правой кнопкой мыши в проводнике, выберите «Свойства» и перейдите на вкладку «Безопасность». Щелкните Добавить, чтобы добавить соответствующего пользователя или группу. Выделите учетную запись ASP.NET и установите флажки для желаемого доступа.
Я попытался исследовать это, но все предложения касаются изменения настроек сервера IIS, к которым я не думаю, что у меня есть доступ, поскольку он работает в облаке. Кто-нибудь может помочь?
РЕДАКТИРОВАТЬ: вот код функции, которая выдает ошибку:
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`