2016-12-02 11 views
0

Ich folgte Anweisungen auf this blog post versucht, anonymen Zugriff für die Homepage zu ermöglichen und an Google umleiten, wenn auf/Admin-Seite mit dieser authorization.json zugreifen.Autorisierungsregeln in Azure App Service funktioniert nicht

{ 
    "routes": [ 
    { 
     "path_prefix": "/", 
     "policies": { "unauthenticated_action": "AllowAnonymous" } 
    }, 
    { 
     "path_prefix": "/Admin", 
     "policies": { "unauthenticated_action": "RedirectToLoginPage" } 
    } 
    ] 
} 

Wenn ich die Homepage @http://mysite.azurewebsites.net/ zugreifen es navigiert mich immer wieder zur Login-Seite. Und nachdem ich mich eingeloggt habe und dann die Umleitung gemacht habe, bekomme ich folgende Fehler innerhalb des Log-Streaming.

2016-12-02T04:30:44 PID[11016] Verbose  [Routes(Preview)] Attempting to load configuration from 'D:\home\site\wwwroot\authorization.json'. 
2016-12-02T04:30:44 PID[11016] Critical System.Runtime.Serialization.SerializationException: There was an error deserializing the object of type Microsoft.Azure.AppService.Routes.RoutesConfig. Encountered unexpected character 'ï'. ---> System.Xml.XmlException: Encountered unexpected character 'ï'. 
    at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, XmlException exception) 
    at System.Runtime.Serialization.Json.XmlJsonReader.ReadAttributes() 
    at System.Runtime.Serialization.Json.XmlJsonReader.ReadNonExistentElementName(StringHandleConstStringType elementName) 
    at System.Runtime.Serialization.Json.XmlJsonReader.Read() 
    at System.Xml.XmlBaseReader.IsStartElement() 
    at System.Xml.XmlBaseReader.IsStartElement(XmlDictionaryString localName, XmlDictionaryString namespaceUri) 
    at System.Runtime.Serialization.XmlReaderDelegator.IsStartElement(XmlDictionaryString localname, XmlDictionaryString ns) 
    at System.Runtime.Serialization.XmlObjectSerializer.IsRootElement(XmlReaderDelegator reader, DataContract contract, XmlDictionaryString name, XmlDictionaryString ns) 
    at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalIsStartObject(XmlReaderDelegator reader) 
    at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName) 
    at System.Runtime.Serialization.XmlObjectSerializer.InternalReadObject(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) 
    at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) 
    --- End of inner exception stack trace --- 
    at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) 
    at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(XmlDictionaryReader reader) 
    at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(Stream stream) 
    at Microsoft.Azure.AppService.Authentication.ModuleUtils.DecodeJson[T](Stream jsonStream) 
    at Microsoft.Azure.AppService.Routes.RoutesConfig.TryLoadFromFile(String configFilePath, Func`2 deserializer, RoutesConfig& config) 
    at Microsoft.Azure.AppService.Routes.RoutesConfig.TryLoadFromJsonFile(String configFilePath, RoutesConfig& config) 
    at Microsoft.Azure.AppService.Routes.RoutesModule.TryLoadRoutesConfig(HttpContextBase context) 
    at Microsoft.Azure.AppService.Routes.RoutesModule.<OnPostAuthenticateRequestAsync>d__4.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at Microsoft.Azure.AppService.Authentication.HttpModuleDispatcher.<DispatchAsync>d__13.MoveNext() 
2016-12-02T04:30:44 PID[11016] Information Sending response: 500.79 Internal Server Error 

Zusätzliche Details. 1. Re-gestartet die Website nach der Veröffentlichung von Visual Studio wie erwähnt. 2. Diese/Admin-Pfad habe ich in AdminController. 3. Die authorization.json befindet sich im Stammverzeichnis der Site. Wenn ich zu PS D: \ home \ site \ wwwroot> navigiere, kann ich die Datei authorization.json sehen.

Ich weiß nicht, was ich falsch bezüglich der Syntax der Datei bin.

Antwort

2

Entsprechend Ihrer Beschreibung folgte ich URL Authorization Rules und erstellte die authorization.json in meinem Visual Studio. Ich könnte es wie erwartet auf meiner Azure Web App funktionieren lassen.

https://bruce-chen-001.azurewebsites.net/

https://bruce-chen-001.azurewebsites.net/admin/admin.html

ich davon aus, dass es etwas falsch mit Ihrer authorization.json-Datei sein. Ich habe ein ähnliches Problem über Encountered unexpected character ‘ï’ error serializing JSON gefunden, auf das Sie sich beziehen könnten.

Aktualisiert

Hier ist meine authorization.json Datei:

Bitte stellen Sie sicher, dass Sie sich entschieden haben Anonyme Anfragen zulassen (keine Aktion) im Rahmen der „Aktion wenn Anfrage wird nicht authentifiziert "im Authentifizierungs-/Autorisierungs-Blade Ihres App-Service auf Azure Portal.

+0

Können Sie Ihre Antwort aktualisieren authorization.json Datei, die Sie für Ihre Website verwendet einzubeziehen? Ich folgte dem msdn-Artikel, um diese Zeichen zu löschen, und versuchte es erneut und startete die Website neu, aber weiterhin navigierte ich zu/es erlaubte keine anonyme Anmeldung. – Mitul

+0

@Mitul Ich habe meine Antwort aktualisiert. Bitte sehen Sie meine Aktualisierungen. –

+0

Ich hatte auf Aktion zu nehmen, wenn die Anfrage nicht authentifiziert ist auf "Mit Google anmelden" eingestellt. Habe es in Anonyme Anfragen erlauben (keine Aktion) geändert und es funktioniert. Vielen Dank. – Mitul

Verwandte Themen