Stworzyłem nową aplikację ASP.NET MVC 4 opartą na szablonie aplikacji internetowej, mogłem z powodzeniem uruchomić ją i uwierzytelnić użytkownika z poziomu VS 2012 Express.Ładowanie strony MVC 4 pokazuje błąd HTTP 500.19
Następnie opublikowano go w folderze na wwwroot, a następnie w Menedżerze usług IIS 7.5 utworzono katalog wirtualny wskazujący na ten folder i przekształcono go w aplikację przy użyciu osobnej puli zintegrowanej 4.0.
Kiedy próbowałem przeglądać aplikację z poziomu menedżera usług IIS I uzyskać następnego błędu:
Błąd HTTP 500,19 - Internal Server Error, Żądana strona może nie być dostępne, ponieważ związane z nimi dane konfiguracyjne stronie nieważny.
Config Błąd: Nie można dodać duplikat wpisu kolekcja typu 'Dodaj' z unikalnym kluczem atrybutu 'name' ustawioną na 'ExtensionlessUrlHandler-zintegrowane-4,0'
Config źródło:
56: <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
57: <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
58: </handlers>
searched here, ja znaleźć odpowiednią odpowiedź:
Rozdzielczość 1
Usuń nieprawidłowy XML ele z pliku ApplicationHost.config lub z pliku Web.config.
Mój plik web.config jest jak poniżej:
<?xml version="1.0"?>
<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>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-digixMVC4-20120915233326;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-digixMVC4-20120915233326.mdf" providerName="System.Data.SqlClient"/>
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="2.0.0.0"/>
<add key="webpages:Enabled" value="false"/>
<add key="PreserveLoginUrl" value="true"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
<!--
The following attributes can be set on the <httpRuntime> tag.
<system.Web>
<httpRuntime targetFramework="4.5"/>
</system.Web>
-->
<system.web>
<compilation targetFramework="4.5"/>
<httpRuntime/>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880"/>
</authentication>
<pages controlRenderingCompatibilityVersion="4.0">
<namespaces>
<add namespace="System.Web.Helpers"/>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"/>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"/>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0"/>
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364g85"/>
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364g85"/>
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364g85"/>
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
</entityFramework>
</configuration>
jak jestem słabo wykwalifikowanej developer w MVC 4, chciałbym zapytać, czy ktoś może dowiedzieć się nieprawidłowy element XML w pliku powyżej.
nie widzę tę samą nazwę dwa razy, nie różni _32bit postfix lub _64bit. Czy to postfiks w jakiś sposób magiczny? – qub1n
Problem dotyczy również mnie. Również mam postfix _32bit/_bitbit, jednak modyfikowanie łańcuchów w jakikolwiek sposób rozwiąże problem, tak długo jak oba łańcuchy są modyfikowane. Oba mogą mieć dokładnie to samo ciało, ale zachować oryginalny postfiks _32bit/_bitbit i nadal będzie działać, co mówi mi, że to * nie * jest magicznym prefiksem. Podejrzewam, że sprawdza on mecze między innymi projektami w roztworze/na serwerze. To lub coś dziwnego dzieje się w IIS. – 16807
Wyobraźmy to po przeczytaniu tego: http://stackoverflow.com/questions/26271958/what-does-extensionlessurlhandler-do-in-an-mvc-application. Kolejność tagów dodaj/usuń najwyraźniej ma znaczenie. Dodałem ExtensionlessUrlHandlers przed usunięciem istniejących wartości domyślnych dostarczonych przez IIS. Wartości domyślne miały taką samą nazwę jak procedury obsługi, które dodałem, stąd błąd. – 16807