2

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

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

Apache + mod_mono

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

Я отправил его в

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

и

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

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

Nginx + FastCGI моно-server4.exe

Удерживая клавишу F5 приводит к 200% загрузки процессора навсегда в моно-FastCGI-server4.exe

Я отправил его в

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

и

Mono ASP.NET в списке рассылки без каких-либо SOLUTIO п.

ли выглядит как есть ошибка в сервере Fastcgi моно или он не совместим с моно 3,2

Использование xsp4.exe непосредственно

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

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

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

без ответа.

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

Havent попробовал ServiceStack, так как он не может использоваться для разработки закрытого источника, который требуется. Кроме того, приложение также использует изображения, css, js-файлы и MVC-представления, которые также нужны.

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

+0

ServiceStack бесплатно в соответствии с FSF – knocte

+0

Согласно servicestack.net/pricing free, это очень ограниченная версия. О неудачной карте ошибки пути, возможно, можно легко ее решить. Я нашел, вероятно, строку в исходном коде, вызывающую это. Как получить дополнительную информацию об этом, mono не пишет дополнительную информацию, когда выбрасывает это исключение? – Andrus

+0

ограниченная версия относительно поддержки! в платной версии больше нет функций, но вы не можете использовать бесплатную версию, если ваше программное обеспечение не является открытым исходным кодом. Я думаю, вы не понимаете лицензию AGPL. – knocte

ответ

1

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

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

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

+0

В случае неудачного отображения пути исключения маршрута apache error.log содержит трассировку стека, которую я опубликовал в http://stackoverflow.com/questions/20356779/how-to-fix-failed-to-map-path-errors-in- моно-mvc4-приложение. Точки трассировки стека, вероятно, на строку 1565 в https://github.com/mono/mono/blob/mono-3.2.1-branch/mcs/class/System.Web/System.Web/HttpRequest.cs#L1565 Это происходит до код приложения выполнен. Какую дополнительную информацию вы получите, чтобы решить эту проблему? Как исправить это или получить больше информации о причине? После нескольких обновлений браузера он всегда встречается в разных вызовах. – Andrus

+0

Отлично! Вы приближаетесь, чтобы исправить эту проблему. Теперь нужно выяснить, почему это исключение не выбрасывается при низкой нагрузке и почему оно бросается под большую нагрузку. Может быть, состояние гонки где-то, которое подвергается тяжелой нагрузке? вам нужно очень внимательно изучить этот класс HttpRequest. – knocte

+0

На этом сервере работает несколько приложений MVC4. Может быть, mod_mono или mod_mono_server передает запрос на неправильную нить. Загрузка не тяжелая: после обновления браузера я буду ждать завершения всех вызовов и просмотра консоли Chrome. Если пустая консоль пуста, это перезапись. После некоторого обновления 500 ошибок в хром-консоли и это исключение в журнале ошибок apache всегда происходит. Это не происходит на домашней странице приложения, в которой нет вызовов ajax. – Andrus

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