Я пытаюсь настроить пользовательские ошибки с помощью IIS для приложения .net framework (построенного с использованием Visual Studio 2015, если это уместно). Наш сервер — это сервер Windows 2012 R2. Я просмотрел другие решения этой проблемы, связанные с переполнением стека, но ни одно из них не решило ее. У меня включены пользовательские ошибки в моей веб-конфигурации и в настройках функций диспетчера серверов. Путь к пользовательской странице ошибок (статическая html-страница) задается в диспетчере серверов для всех кодов ошибок. Некоторые предыдущие стеки предлагали отключить python, поэтому я попробовал это, но это ничего не решило. Моя веб-конфигурация выглядит так:
<?xml version="1.0"?>
<!--other web config-->
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<appSettings>
<add key="webpages:Version" value="3.0.0.0"/>
<add key="webpages:Enabled" value="false"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
<system.web>
<httpRuntime targetFramework="4.5"/>
<customErrors defaultRedirect="/Views/Home/customError.cshtml" mode="On"/>
<compilation debug="true"/>
</system.web>
<system.webServer>
<!--<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" subStatusCode="-1" responseMode="ExecuteURL" path="/Views/Home/customError.cshtml" />
</httpErrors>-->
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<connectionStrings>
<add name="Entities" connectionString="***" providerName="System.Data.EntityClient"/>
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v12.0"/>
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>
Я не видел дублирующегося статического контента в веб-конфигурации. Я добавил все перенаправления страниц ошибок iis непосредственно в диспетчере серверов для приложения.
Когда я запускаю приложение локально и пытаюсь вызвать ошибку 404, я получаю ошибку времени выполнения: при обработке вашего запроса произошло исключение. Кроме того, при выполнении пользовательской страницы ошибки для первого исключения возникло другое исключение. Запрос прекращен. Когда я запускаю его через сервер (также пытаюсь вызвать ошибку 404), он загружается на предыдущую страницу.
Я не уверен, как решить эту проблему. Любое понимание было бы здорово! Спасибо!
Соответствующая часть контроллера:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Net;
using System.Net.Mail;
using BE.Models;
using BE.ViewModels;
namespace BE.Controllers
{
public class HomeController : Controller
{
private Entities db = new Entities();
// Uri Route: "~/Home"
// View Route: "/Views/Home/Index.cshtml"
public ActionResult Index()
{
return View();
}
// Route: "~/Home/customError"
// View Route: "/Views/Home/customError.cshtml"
public ActionResult customError()
{
return View();
}
public ActionResult About()
{
return View();
}
public ActionResult Contact()
{
return View();
}
public ActionResult Resources()
{
return View();
}
}
}
Я также изменил global.asax.cs, чтобы он выглядел так:
namespace BE
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
RouteTable.Routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}
);
};
};
Однако это дает мне ошибки сборки.
.cshtml
вместо правильного HTML-файла. Возможно, проблема в этом? - person DavidG   schedule 13.07.2017