Как реализовать работающий веб-сервер с приложением Mono WebAPI

Приложение Mono 3.2 MVC4 WebAPI работает на сервере Debian x64 VPS. Mono скомпилирован из исходного кода и используется поддерево 4.5. Приложение требует браузера Chrome или Safari.

После обновления окна браузера несколько раз сервер не работает должным образом. Я перепробовал все известные бесплатные возможности:

Apache + mod_mono

После нажатия кнопки обновления браузера несколько раз сервер случайным образом возвращает ошибку 500 для некоторых страниц, и журнал ошибок apache содержит исключение "сбой при отображении пути".

Я отправил это в

https://stackru.com/questions/20356779/how-to-fix-failed-to-map-path-errors-in-mono-mvc4-application

И в

Моно ASP.NET список рассылки без какого-либо ответа.

На сервере имеется множество монофонических приложений, возможно, mod_mono выбирает неправильный поток или есть какая-то ошибка в реализации отображения webapi в моно.

Nginx + mono-fastcgi-server4.exe

Удержание клавиши F5 приводит к 200% загрузке ЦП навсегда в mono-fastcgi-server4.exe

Я отправил это в

https://stackru.com/questions/20512978/how-to-limit-mono-197-cpu-usage-in-mono-fastcgi-server

И в

Моно ASP.NET список рассылки без какого-либо решения.

Похоже, что есть ошибка в моно сервере fastcgi или он не совместим с моно 3.2

Использование xsp4.exe напрямую

Это вызывает "сервер не возвращает данные" в Chrome, если окно браузера обновляется несколько раз.

Я разместил это в

https://code.google.com/p/chromium/issues/detail?id=329311

без ответа.

Возможно, xsp4 неправильно реализует протокол http.

Не пробовал ServiceStack, поскольку он не может использоваться для разработки с закрытым исходным кодом, которая требуется. Также приложение использует также изображения, файлы CSS, JS и представления MVC, которые также необходимо обслуживать.

Как создать правильный сервер для моно, который возвращает правильные данные?

1 ответ

Решение

Когда происходит 500 ошибок, где-то в библиотеках моно классов выдается исключение, вы можете узнать больше, используя трассировку:

mono --trace=E:System.Exception YourApp.exe

Таким образом, очень возможно, что вы узнаете, что вызывает проблемы с загрузкой, которые вы видите в каждом случае (чтобы сделать это для mono-fastcgi, вам нужно будет добавить аргумент trace в скрипт, который вызывает mono-fastcgi-server4. EXE).

Другие вопросы по тегам