2013-04-24 21 views
8

Po dodaniu assembly z System.Data.Entity do mojej konfiguracji sieciowej otrzymałem ten błąd: Jest to błąd użycia sekcji zarejestrowanej jako allowDefinition = 'MachineToApplication' poza poziom aplikacji. Ten błąd może być spowodowany tym, że katalog wirtualny nie jest skonfigurowany jako aplikacja w usługach IIS.sekcja zarejestrowana jako allowDefinition = 'MachineToApplication' poza poziomem aplikacji

Usunąłem foldery obj i bin, usunąłem uwierzytelnianie linii = "windows", próbowałem otworzyć ponownie, jak niektórzy stwierdzili, że zadziałało, Sprawdziłem, że jest tylko 1 plik web.config w folderze głównym (Entity Framework - Folder dla formularzy, modeli, DAL i BLL) ...

Jakie są inne powody, dla których tak się stanie? Szukałem wszędzie i to w zasadzie powyższe powody znalazłem ....

To mój web.config jeśli to robi różnicę:

<configuration> 
    <connectionStrings> 
    <add name="ApplicationServices" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 
    <add name="CStringVKB" connectionString="Data Source=.;Initial Catalog=VKB;Persist Security Info=True;User ID=websiteservice;Password=websiteservice" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
    <compilation debug="true" optimizeCompilations="true" targetFramework="4.0" > 
     <assemblies> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     </assemblies> 
    </compilation> 
    <!--<authentication mode="Windows"> 
     <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> 
    </authentication>--> 
    <membership> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
     applicationName="/" /> 
     </providers> 
    </membership> 
    <profile> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> 
     </providers> 
    </profile> 
    <roleManager enabled="false"> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
     </providers> 
    </roleManager> 
    </system.web> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

Co mogę zrobić, aby rozwiązać ten problem?

Odpowiedz

23

Zasadniczo błąd oznacza, że ​​istnieje plik web.config w jednym z podfolderów, który ma element konfiguracji, który nie powinien mieć. Czy to jest plik konfiguracyjny root/only web? Jeśli nie, czy możesz je również opublikować?

To też brzmi głupio, ale chciałbym jeszcze raz sprawdzić, czy otwierasz stronę w swoim IDE (i nie omyłkowo otwierając folder nadrzędny). Widziałem, że ludzie spędzają kilka godzin próbując debugować ten sam błąd, gdy przez cały czas nie znajdowali się we właściwym katalogu.

Oto dobre wyjaśnienie, w jaki sposób hierarchia web.config jest ustawiona na ASP, które pomogą Ci wyobrazić sobie, jak to działa: http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx

1

Widocznie w moim rozwiązania były dwa pliki web.config. Używam MVC4 i był jeszcze inny plik konfiguracyjny w Widoki i dokonałem zmiany w niewłaściwym pliku. Naprawiono tam pomógł mi.

Ale zawsze możesz zmienić domyślne przekierowanie/trasę w pliku global.asax.

0

Ten problem najczęściej pojawia się po otwarciu witryny w programie Visual Studio, ale przypadkowo otwórz element nadrzędny folderu głównego. Na przykład wyobraź sobie, że masz stronę internetową znajdującą się w C: \ MyProjects \ Website1, gdzie folder Website1 jest katalogiem głównym witryny. Po otwarciu tej witryny z programu Visual Studio należy podać folder główny witryny - konieczne jest wybranie folderu Witryna1. Jeśli przypadkowo wybierzesz folder MyProjects, plik Web.config w folderze Website1 znajduje się teraz w jednym z podfolderów witryny. Ponieważ ten plik Web.config zawiera element, oprócz innych ustawień poziomu aplikacji, otrzymasz powyższy błąd.

Poprawka do tego błędu (w większości przypadków) polega na zamknięciu projektu i ponownym otwarciu go z programu Visual Studio, upewniając się, że wybrałeś odpowiedni folder.

Happy Programming!

0

Odpowiedź Chris Noreikis jest w rzeczywistości poprawna. Ale brakuje ważnego szczegółu. Jeśli z jakiegoś powodu otworzysz projekt/rozwiązanie w innej wersji VS niż pierwotnie utworzona, usługa VS podejmie próbę migracji. Czasami podczas tej migracji VS utworzy folder o nazwie "kopia zapasowa" lub "kopia zapasowa _ {#}". Nawet jeśli cofniesz te siły migracji, te katalogi pozostaną.

Obecność tych katalogów jest w niektórych przypadkach (jak moja) przyczyną tego błędu. Usunięcie tych katalogów wyeliminuje problem.

Mam nadzieję, że to uratuje komuś niezliczone godziny, które straciłem w związku z tym problemem.

Powiązane problemy