Есть несколько вещей, которые могут вызывать ошибку:
Проблема с библиотеками MVC
На рабочем сервере могут отсутствовать библиотеки MVC, хранящиеся в GAC. Чтобы исправить это, все, что вам нужно сделать, это зайти в References
панель / папку вашего проекта MVC и найти System.Web.Mvc
, System.Web.Routing
и System.Web.Abstractions
. Теперь выберите их, нажав Ctrl , и установите для параметра Копировать локально значение true в окне свойств.
Трудно знать, прежде чем публиковать на сервере, так ли это, поэтому я рекомендую просто устанавливать сборки для постоянного копирования локально.
Целевая страница
У вашей целевой страницы могут быть проблемы. Из моего опыта работы с ASP.NET MVC я видел, что целевая страница необходима для правильной работы IIS. Я использую страницу, которая была включена в шаблон ASP.NET MVC 2. Вы должны сравнить мой с вашим, чтобы увидеть, есть ли у вас все, что нужно:
Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="YourNamespace._Default" %>
<%-- Please do not delete this file. It is used to ensure that ASP.NET MVC is activated by IIS when a user makes a "/" request to the server. --%>
Default.aspx.cs:
using System.Web;
using System.Web.Mvc;
using System.Web.UI;
namespace YourNamespace
{
public partial class _Default : Page
{
public void Page_Load(object sender, System.EventArgs e)
{
// Change the current path so that the Routing handler can correctly interpret
// the request, then restore the original path so that the OutputCache module
// can correctly process the response (if caching is enabled).
string originalPath = Request.Path;
HttpContext.Current.RewritePath(Request.ApplicationPath, false);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
HttpContext.Current.RewritePath(originalPath, false);
}
}
}
Права доступа
На основании первого полученного вами кода состояния HTTP может возникнуть проблема с разрешениями. Папка , содержащая ваше приложение MVC, должна быть определена как приложение и иметь соответствующие разрешения .
Довольно легко сделать обе эти вещи через IIS. Однако у вас, вероятно, нет доступа к IIS; если вы это сделаете, вам очень повезло!
В противном случае вы можете изменить разрешения через FTP с помощью команды chmod
. Вы можете подключиться через Filezilla, очень хороший FTP-клиент с открытым исходным кодом, просто сделайте это через диалоговое окно + щелчок правой кнопкой мыши.
Что касается определения папки как приложения, вы должны проверить, можете ли вы сделать это с помощью любых вещей IIS, предоставленных вам хостом. Если нет, свяжитесь с ними и попросите их настроить.
Удачи! Надеюсь, я помог.