Проблемы с Mono, MVC и FastCGI
У меня есть два веб-сайта, которые я создал с помощью Mono.NET. Оба были построены исключительно с использованием Xamarin Studio (например, MonoDevelop). Первое - стандартное приложение веб-форм Asp.NET, а второе - приложение MVC Asp.NET.
Я успешно развернул первое приложение на своем сервере RedHat 7. Сервер использует NGINX в качестве прохода и использует FastCGI. Само веб-приложение запускается в корневом каталоге (/var/www/html/) и, таким образом, указывает на http://%5Bmyserver%5D.com/ kicks приложения. Это все работает красиво.
Мое второе приложение (приложение MVC) должно работать как своего рода виртуальный каталог корня. Поэтому указание на http://%5Bmyserver%5D.com/admin/ должно получить доступ к приложению MVC. Это было правильно настроено на сервере, и когда вы указываете на http://%5Bmyserver%5D.com/admin, он явно пытается запустить приложение MVC.
Моя проблема заключается в том, что при попытке доступа к http://%5Bmyserver%5D.com/admin возникает исключение приложения:
System.Web.Compilation.ParseException
Cannot find type Letters.Web.Admin.MvcApplication
Description: Error parsing a resource required to service this request. Review your source file and modify it to fix this error.
Details: Cannot find type Letters.Web.Admin.MvcApplication
Error origin: Parser
Error source file: /var/www/html/admin/Global.asax
Error source context:
Error lines: 1, 1
1: <%@ Application CodeBehind="Global.asax.cs" Inherits="Letters.Web.Admin.MvcApplication" Language="C#" %>
Я гуглил об этой ошибке в течение 2 дней без удачи. Я дважды проверил, чтобы убедиться, что каталог / bin существует в папке / admin (он есть) и что присутствуют все соответствующие файлы.dll, включая dll веб-приложения (также присутствует). Я удостоверился, что у моего Global.asax есть соответствующее объявление (это делает... см. Ниже)
<%@ Application CodeBehind="Global.asax.cs" Inherits="Letters.Web.Admin.MvcApplication" Language="C#" %>
Я также убедился, что пространство имен в коде задано правильно (это... см. Ниже)
namespace Letters.Web.Admin
{
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes (RouteCollection routes)
{
routes.IgnoreRoute ("{resource}.axd/{*pathInfo}");
routes.MapRoute (
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
public static void RegisterGlobalFilters (GlobalFilterCollection filters)
{
filters.Add (new HandleErrorAttribute ());
}
protected void Application_Start ()
{
AreaRegistration.RegisterAllAreas ();
RegisterGlobalFilters (GlobalFilters.Filters);
RegisterRoutes (RouteTable.Routes);
}
}
}
Я не могу на всю жизнь понять проблему. Кажется, все работает правильно. Это приложение отлично работает на моем Mac с использованием студии Xamarin. Я дважды проверил, и на моем Mac установлена та же версия mono, что и на сервере. Я предполагаю, что, вероятно, происходит что-то еще, что скрывается этой ошибкой, но я не могу понять проблему. У кого-нибудь есть какие-либо идеи?