2012-11-23 11 views
6

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.

Odpowiedz

5

Masz tę samą nazwę dwa razy. nazwa musi być unikalna.

aktualny config

<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" /> 

zmiana

<add name="ExtensionlessUrlHandler-Integrated-4.0a" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/> 

<add name="ExtensionlessUrlHandler-Integrated-4.0b" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" /> 
+1

nie widzę tę samą nazwę dwa razy, nie różni _32bit postfix lub _64bit. Czy to postfiks w jakiś sposób magiczny? – qub1n

+0

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

+0

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

6

To jest prawdziwe dla ASP.NET 5.2 WebAPI też ..

miałem

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.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" /> 

Które Zmieniłem do

<add name="ExtensionlessUrlHandler-Integrated-4.0a" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    <add name="ExtensionlessUrlHandler-Integrated-4.0b" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 

To jest .. To zadziałało.

+0

Czy to nie jest ten sam uchwyt? Dlaczego trzeba dodać go dwukrotnie z inną nazwą? –

0

Doświadczyłem podobnego problemu.

co pracował dla mnie było usunąć, a następnie ponownie dodać obsługi:

Domyślam się, że jeśli domyślnie jest włączona w serwerze IIS już, może to wywołać ten błąd.

Używam IIS 10, MVC 5, .NET Framework 4.6.1

Nadzieja to pomaga :-)

Powiązane problemy