#flask #iis
#flask #iis
Вопрос:
Я пытаюсь заставить очень простое приложение flask работать на IIS 10, работающем на Windows Server 2019. Я следовал инструкциям обработчика HTTPPlatform от: https://docs.microsoft.com/en-us/visualstudio/python/configure-web-apps-for-iis-windows?view=vs-2019
Но я продолжаю получать ошибки HTTP 500.19 с кодом ошибки 0x8007000d. Из поиска в Google я подозреваю, что проблема в моем web.config, но я не знаю, что не так. Приложение отлично работает из командной строки. Это мой web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="D:python39python.exe"
arguments="D:inetpubwwwrootflasktest.py"
stdoutLogEnabled="true"
stdoutLogFile="d:logspython.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="SERVER_PORT" value="9010" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
Это мой app.py:
from flask import Flask, render_template
app = Flask(__name__)
#app.debug = True
@app.route("/", methods=('GET', 'POST'))
def home():
return render_template('main.html', hello = 'hello world')
if __name__ == '__main__':
app.run(host='0.0.0.0',port=9010)
это мой main.html
{% extends 'layout.html' %}
{% block content %}
<div class="container">
<div class="leftrow1">
{{ hello }}
</div>
<div class="leftrow2">
</div>
<div class="leftrow3">
</div>
<div class="leftrow4">
</div>
<div class="main_frame_1">
</div>
<div class="main_frame_2">
</div>
</div>
{% endblock content %}
и это layout.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="/static/css/style.css"/>
</head>
<body>
{% block content %}
{% endblock content %}
</body>
Обновление: на основе полученных комментариев добавлена дополнительная информация об ошибке
Это ошибка, которую я получаю (без установки httpplatformhandler), в журнале событий ничего нет, когда это происходит:
Это ошибка, которую я получаю после установки httpplatformhandler:
с сообщением 500.3 я также получаю кучу событий 1000 от HttpPlatformHandler в журнале событий:
Комментарии:
1. Загрузите и установите HttpPlatformHandler, пожалуйста iis.net/downloads/microsoft/httpplatformhandler
2. Можете ли вы показать мне подробную информацию о вашей странице ошибок? или вы можете попробовать использовать отслеживание неудачных запросов для просмотра конкретного подробного сообщения об ошибке.
3. одно из предложений, которые я нашел при поиске в Google 0x80070057 ( github.com/aspnet/Hosting/issues/866 ) состоял в том, чтобы удалить httpplatformhandler, потому что в .net core он запечен (у меня .net core 3.1.6). Итак, я не уверен, какой путь продолжить, с установкой httpplatformhandler или без него.
4. Вы когда-нибудь исправляли эту проблему? Я сталкиваюсь с той же проблемой, пытаясь заставить простое приложение flask работать с httpPlatformHandler
Ответ №1:
Похоже, у вас нет правильного разрешения на доступ D:python39python.exe и D:inetpubwwwrootflasktest.py .
- Откройте диспетчер IIS -> Выберите сайт, на который вы добавили HttpPlatformHandler
- Щелкните Сопоставления обработчиков в представлении объектов -> выберите HttpPlatformHandler
- Нажмите Изменить разрешение функции на панели действий
- Убедитесь, что у вас есть разрешение на выполнение
Комментарии:
1. Я пробовал это, но все равно получал ошибку 500.3
2. В вашем журнале событий я обнаружил, что опубликованное вами изображение является общей информацией, можете ли вы показать мне подробную информацию?
3. единственное, что кажется «<EventData> <Data> Процесс ‘0’ не удалось запустить. Порт = 22700, код ошибки = ‘-2147024809’.</Data> </EventData> </Event>»
4. Убедитесь, что IIS_IUSRS имеет права доступа python39 и wwwroot. Если это не устраняет проблему, попробуйте использовать неудачную трассировку запросов.