Próbuję opublikować witrynę sieci Web MVC jako przeglądarkę Azure.
Kiedy uruchamiam go lokalnie, wszystko działa dobrze.
Ale kiedy opublikuję go na platformie Azure i przejdę do jakiejś akcji MVC, pojawia się ten błąd:
Błąd serwera w aplikacji „/”.
Błąd wykonania
Opis: Wystąpił wyjątek podczas przetwarzania Twojego żądania. Ponadto wystąpił inny wyjątek podczas wykonywania niestandardowej strony błędu dla pierwszego wyjątku. Żądanie zostało zakończone.
Nie rozumiem, jak program obsługi błędów może napotkać wyjątek, ponieważ błędy są obsługiwane w sposób domyślny:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
To jest mój web.config:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
To jest Error.cshtml:
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Error";
}
<h2>
Sorry, an error occurred while processing your request.
</h2>
Co może spowodować ten wyjątek i dlaczego nie mogę go odtworzyć lokalnie?
asp.net-mvc
asp.net-mvc-4
web-config
server-error
Ilya Kogan
źródło
źródło
Odpowiedzi:
Najpierw ustaw customErrors = "Off" w web.config i przeprowadź ponowne wdrożenie, aby uzyskać bardziej szczegółowy komunikat o błędzie, który pomoże nam zdiagnozować problem. Możesz również RDP do wystąpienia i przejść do witryny z usług IIS lokalnie, aby wyświetlić błędy.
Najpierw jednak zgadnij - masz pewne odwołania (najprawdopodobniej odwołania do zestawu Azure SDK), które nie są ustawione na wartość Kopiuj lokalne = true. Tak więc wszystkie zależności nie są wdrażane.
Najpierw przejdź do szczegółowego błędu i zaktualizuj swoje pytanie.
AKTUALIZACJA: Drugą opcją teraz dostępną w VS2013 jest zdalne debugowanie usługi w chmurze lub maszyny wirtualnej .
źródło
Nie korzystałem z platformy Azure, ale lokalnie wystąpił ten sam błąd.
<customErrors mode="Off" />
Wydawało się, że używanie nie przyniosło żadnego efektu, ale sprawdzenie dzienników aplikacji w Podglądzie zdarzeń ujawniło ostrzeżenie ze strony ASP.NET, które zawierało wszystkie szczegóły potrzebne do rozwiązania problemu.źródło
Jeśli dodasz to do pliku transformacji web.config, możesz również ustawić niektóre opcje publikowania, aby debugowanie było włączone lub wyłączone:
źródło
Podczas publikowania na IIS, przez Web Deploy, właśnie sprawdziłem Plik Opcje publikowania i stracony. Teraz działa! Po wdrożeniu pola wyboru nie muszą być zaznaczane. Nie sądzę, żeby to rozwiązanie było dla wszystkich, ale to jedyna rzecz, jaką musiałem zrobić, aby rozwiązać mój problem. Powodzenia.
źródło
Miałem ten problem tylko z
redirectMode="ResponseRewrite"
(redirectMode="ResponseRedirect"
działało dobrze) i żadne z powyższych rozwiązań nie pomogło mi rozwiązać problemu. Jednak po zmianie „Managed Pipeline Mode” puli aplikacji serwera z „Classic” na „Integrated” niestandardowa strona błędu pojawiła się zgodnie z oczekiwaniami.źródło
Zamiast tego można użyć Oracle.ManagedDataAccess.dll (pobierz z Oracle), dołączyć ten plik dll do katalogu bin dir projektu, dodać odwołanie do tego pliku dll w projekcie. W kodzie „przy użyciu Oracle.MangedDataAccess.Client”. Wdróż projekt na serwerze w zwykły sposób. Nie ma potrzeby instalowania klienta Oracle na serwerze. Nie ma potrzeby dodawania informacji o zestawie w web.config.
źródło