Веб-страница IIS возвращает "Ошибка сервера 500", когда я нажимаю кнопку "Отправить" (запрос POST) - PullRequest
0 голосов
/ 06 мая 2020

Я использую Django framework для создания простого веб-портала для моей команды. Основная цель веб-портала - доставить файл на сервер с помощью paramiko.SSHClent (). Если я запустил свой проект на локальном сервере, используя «python manage.py runserver», то нажатие кнопки «Отправить» доставит файл от пользователя на сервер.

Следующим шагом было развертывание веб-сайта. Итак, я использовал Windows Inte rnet Information Service (IIS) Manager 8.5 для развертывания своего веб-сайта. Сайт развернут, но есть одна проблема. Если я нажимаю кнопку «Отправить», я получаю эту ошибку: «Ошибка сервера (500)»

Вот Подробная ошибка изображение: 500 Подробное изображение ошибки сервера

Вот файл views.py :

    from django.shortcuts import render, redirect
    from .forms import DocumentForm
    from django.contrib import messages
    import paramiko
    import os
    from . import file_mapping


    def uploadForm(request):

    if request.method == 'POST':
    form = DocumentForm(request.POST, request.FILES)
    if form.is_valid():
        form.save()

        document = request.FILES['document']
        client_name = form.cleaned_data.get('client')
        file_type = form.cleaned_data.get('fileType')
        print('Client Name: ' + client_name)
        print('File Type: ' + file_type)

        file_mapping.handle_uploaded_file(document)
        file_mapping.setupfilename(client_name, file_type)
        #file_mapping.connectCqaServer(document)


        messages.success(request, f'Your file has been uploaded.')

    else:
        form = DocumentForm()
        #messages.warning(request, f'Your file is Invalid')

    return render(request, 'forms/forms.html', {'form': form}) 

Вот формы . html file:

    {% extends "blog/base.html"%}
    {% load crispy_forms_tags %} 
    {% block content %}
    <div class="content-section">
     <form method="POST" enctype="multipart/form-data">
         {% csrf_token %}
         <fieldset class="form-group">
             <legend class="border-bottom mb-4"> Upload Name and File </legend>
             {{ form | crispy }}
         </fieldset>

         <div class="form-group">
             <button class="btn btn-outline-info" type="submit">Upload</button>
         </div>
     </form>
    </div>
    {%endblock content %}

Вот настройки Handler Mapping в диспетчере IIS: HANDLER MAPPING IMAGE LINK

Вот IIS Log :

    2020-05-06 18:23:52 10.137.11.223 POST /forms/ - 80 - 10.25.75.1 
    Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+ 
    (KHTML,+like+Gecko)+Chrome/81.0.4044.129+Safari/537.36 
    http://spscvt.com/forms/ 500 0 0 164

У МЕНЯ НЕ УСТАНОВЛЕН WEBDAV

Может ли кто-нибудь помочь с этой проблемой? Из своего онлайн-исследования я обнаружил, что IIS не поддерживает метод POST, но я не знаю, как снять ограничение POST.

Спасибо

1 Ответ

0 голосов
/ 23 мая 2020

Microsoft IIS создает нечто под названием AppPool . По умолчанию у вас будет пользователь IIS AppPool\DefaultAppPool. У этого пользователя должны быть разрешения для вашей базы данных и других необходимых файлов для чтения и записи.

Если они этого не сделают, он вернет ошибку 500. Вы можете посмотреть этот клип здесь, чтобы узнать, как исправить ошибку Django в IIS с ошибкой 500 .

Чтобы предоставить разрешения, вы можете выполнить следующие шаги

  1. Щелкните правой кнопкой мыши папку проекта Django

  2. Свойства -> Безопасность

  3. Редактировать -> Добавить : IIS AppPool\DefaultAppPool или любой другой пул приложений, который вы используете

  4. Перезагрузите сервер и снова проверьте

Редактировать

I не видел, что вы прикрепили изображение. Я думаю, вам нужно также разрешить IIS AppPool\DefaultAppPool доступ к Python. Выполните указанные выше действия со ссылкой на каталог, указывающий на вашу установку Python (включая вашу venv)

...