2016-07-05 3 views
1

У меня есть простая фляжка, размещенная на Microsoft Azure, которая позволяет пользователям входить в систему, загружать файлы, просматривать загруженные файлы и выходить из системы.
Теперь, чтобы более эффективно обрабатывать пользователей, я решил использовать сеанс из фляжки.
вот мой пример кодаAzure Flask HTTP Ошибка 500.0 - ОШИБКА ВНУТРЕННЕГО СЕРВЕРА

'''import statements''' 
from flask import render_template, request, session 
'''more import statements''' 

@app.route('/') 
def home(): 
    return render_template('login.html') 

@app.route('/login_user', methods=['GET', 'POST']) 
def login_user(): 
    username = str(request.form['username']) 
    password = request.form['password'] 
    connection = MongoClient('mongodb://username:[email protected]:pot_number/db_name') 
    collection = connection.db_name.demo 

    record = collection.find_one({'username':username}) 
    if password == record['password']: 
     session['username'] = username 
     return render_template('index.html') 
    else: 
     login_message = "Invalid Username/Password" 
     return render_template('login.html',login_message=login_message) 

@app.route('/upload', methods=['GET', 'POST']) 
def upload(): 
    if 'username' in session: 
     return render_template('upload.html') 
    else: 
     return render_template('login.html') 

@app.route('/logout', methods=['GET', 'POST']) 
def logout(): 
    session.pop('username',None) 
    return render_template('login.html') 


всякий раз, когда я пытаюсь добавить сессии [ «имя пользователя»] = имя пользователя в приложение падает давая Внутренняя ошибка сервера.

Im не уверен, какой файл журнала для публикации, поскольку я новичок в Azure. Вот журнал событий

Application ID: /LM/W3SVC/1909144379/ROOT 

Process ID: 69820 

Exception: System.Configuration.ConfigurationErrorsException 

Message: Couldn't find type for class Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. 

StackTrace: at System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type baseType, String initializeData) 
    at System.Diagnostics.TypedElement.BaseGetRuntimeObject() 
    at System.Diagnostics.ListenerElement.GetRuntimeObject() 
    at System.Diagnostics.ListenerElementsCollection.GetRuntimeObject() 
    at System.Diagnostics.TraceInternal.get_Listeners() 
    at System.Diagnostics.TraceInternal.WriteLine(String message) 
    at System.Diagnostics.Debug.WriteLine(String message) 
    at Microsoft.Web.Compilation.Snapshots.SnapshotHelper.TakeSnapshotTimerCallback(Object stateInfo) 
    at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state) 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.TimerQueueTimer.CallCallback() 
    at System.Threading.TimerQueueTimer.Fire() 
    at System.Threading.TimerQueue.FireNextTimers() 
    at System.Threading.TimerQueue.AppDomainTimerCallback()</Data></EventData></Event><Event><System><Provider Name=".NET Runtime"/><EventID>1026</EventID><Level>0</Level><Task>0</Task><Keywords>Keywords</Keywords><TimeCreated SystemTime="2016-07-05T10:03:46Z"/><EventRecordID>348982031</EventRecordID><Channel>Application</Channel><Computer>RD00155DFA5791</Computer><Security/></System><EventData><Data>Application: w3wp.exe 
Framework Version: v4.0.30319 
Description: The process was terminated due to an unhandled exception. 
Exception Info: System.Configuration.ConfigurationErrorsException 
    at System.Diagnostics.TraceUtils.GetRuntimeObject(System.String, System.Type, System.String) 
    at System.Diagnostics.TypedElement.BaseGetRuntimeObject() 
    at System.Diagnostics.ListenerElement.GetRuntimeObject() 
    at System.Diagnostics.ListenerElementsCollection.GetRuntimeObject() 
    at System.Diagnostics.TraceInternal.get_Listeners() 
    at System.Diagnostics.TraceInternal.WriteLine(System.String) 
    at System.Diagnostics.Debug.WriteLine(System.String) 
    at Microsoft.Web.Compilation.Snapshots.SnapshotHelper.TakeSnapshotTimerCallback(System.Object) 
    at System.Threading.TimerQueueTimer.CallCallbackInContext(System.Object) 
    at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    at System.Threading.TimerQueueTimer.CallCallback() 
    at System.Threading.TimerQueueTimer.Fire() 
    at System.Threading.TimerQueue.FireNextTimers() 
    at System.Threading.TimerQueue.AppDomainTimerCallback() 

</Data></EventData></Event></Events> 


здесь трассировки стека

2016-07-05T09:48:45 
System.ApplicationException: The trace listener AzureBlobTraceListener is disabled. ---> System.InvalidOperationException: The SAS URL for the cloud storage account is not specified. Use the environment variable 'DIAGNOSTICS_AZUREBLOBCONTAINERSASURL' to define it. at Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceListener.RefreshConfig() 
--- End of inner exception stack trace --- 

Вот подробная ошибка

Detailed Error Information: 
Module  FastCgiModule 
Notification  ExecuteRequestHandler 
Handler Python FastCGI 
Error Code  0x00000000 
Requested URL  http://SuperFlask:80/handler.fcgi/login_user 
Physical Path  D:\home\site\wwwroot\handler.fcgi\login_user 
Logon Method  Anonymous 
Logon User  Anonymous 
+0

Это также происходит локально? – syntonym

+0

Нет, это нормально работает на моей локальной машине. Внутренняя ошибка сервера возникает только тогда, когда она развернута на azure –

+0

Вниз избирателю, пожалуйста, сообщите мне, что было не так, чтобы я мог исправить себя в будущем –

ответ

0

ли вы установили app.secret_key перед использованием переменная сеанса? У меня была такая же проблема, она работала на местном уровне, но бросил «Внутренняя ошибка сервера» в лазури, потому что я поставил его, если _name__ == «_main__» блок, как это:

if __name__ == '__main__': 
    HOST = environ.get('SERVER_HOST', 'localhost') 
    try: 
     PORT = int(environ.get('SERVER_PORT', '5555')) 
    except ValueError: 
     PORT = 5555 
    app.secret_key = "secret_key"  
    app.run(HOST, port=PORT) 

Я поставил app.secret_key = «secret_key «вне блока if, и это сработало.

Смежные вопросы