Używam aplikacji na port aplikacji napisanej w MVC4.
Pakiet plików css nie działa. Na moim komputerze lokalnym w trybie debugowania widzę kod aplikacji i widzę pliki. Aplikacja działa zgodnie z oczekiwaniami.
<link href="/Content/css/home/basic-jquery-slider.css" rel="stylesheet"/>
<link href="/Content/css/home/Home.css" rel="stylesheet"/>
Kiedy przesyłam aplikację do Appharbor, widzę pakiet w kodzie, ale aplikacja nie działa.
<link href="/Content/css/home?v=zhVOIpUNuvCOZhJyBcQWpMlozayor4te6k-pM29wHqI1" rel="stylesheet"/>
Kiedy przeglądam ten link w href
I get 403 - Forbidden: Access is denied.
Jak rozwiązać ten problem?
asp.net-mvc
asp.net-mvc-4
appharbor
asp.net-optimization
Ricardo Polo Jaramillo
źródło
źródło
Odpowiedzi:
Domyślam się, że ścieżka
Content/css
istnieje na dysku w Twojej aplikacji. W takim przypadku to usługi IIS będą obsługiwać żądanie, a nie MVC.Upewnij się, że ścieżka wirtualna pakietu (parametr konstruktora StyleBundle) nie jest zgodna z folderem w systemie plików.
Z komentarzy:
źródło
Ten problem jest domyślny .NET nie „przetwarza” żądań z rozszerzeniem .js lub .css.
Są na to dwie poprawki (wystarczy zrobić JEDNĄ)
A) Usuń rozszerzenia z nazw pakietów. (zalecane) Spowoduje to, że .NET przetworzy żądanie i uruchomi je za pośrednictwem modułu BundleModule.
B) Dodaj to do swojego web.config w sekcji system.webServer, co spowoduje, że .NET będzie uruchamiać żądania .js i .css przez moduł BundleModule.
Wielkie okrzyki dla Raya Moro, który odkrył rzeczywistą przyczynę i podzielił się nią ze mną na moim blogu: http://blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html
źródło
Zdarzyło się też ze mną, kiedy próbowałem wdrożyć moją aplikację ASP.NET MVC w AppHarbor.
Miałem pakiet arkuszy stylów z nazwą
a struktura folderów była
Po prostu zmieniając nazwę pakietu na
"~/Content/bootstrap-css"
mój problem został rozwiązany.źródło
Wiem, że spóźniłem się 4 lata na to pytanie, ale to zadziałało.
źródło
403 błąd rozwiązany. tutaj jest szczegółowe wyjaśnienie i rozwiązanie błędu 403.
Rozwiązanie jest pokazane dla pakietu CSS. Jednak dotyczy to również JavaScript.
http://www.mvccentral.net/Story/Details/articles/kahanu/stylebundle-403-error-solved
Krótko mówiąc, upewnij się, że ścieżka wirtualna
[Script | Style]Bundle("~/content/[script | css]")
nie pasuje do folderu w systemie plików (np.C:\approot\Content\[script | css]
)[Script | Style]Bundle("~/content/[scriptDiff | cssDiff]")
źródło
Rozwiązałem problem, dodając poniższy wiersz kodu w klasie BundleConfig
źródło
To, co robię, jest bardzo proste,
Dodaję „js” na końcu ScriptBundle w ten sposób: new ScriptBundle („~ / bundles / appjs”) I dodaję „css” na końcu StyleBundle, tak jak to: new StyleBundle („~ / content / appcss”)
Nazwy moich folderów nigdy nie kończą się na „js” lub „css”.
Że należy to zrobić.
źródło
Dotyczy to również „klasy ScriptBundle”, upewnij się, że „nazwa parametru” konstruktora nie jest zgodna ze ścieżką w systemie plików aplikacji internetowej. Pamiętaj, że usługi IIS spróbują obsłużyć plik / żądanie.
źródło
Problem może również wynikać z zaszyfrowania pliku. Przyszło mi to do głowy, gdy pobrałem BootStrap i użyłem dostarczonych plików. Pokazały zielone w Eksploratorze Windows i działały dobrze w Visual Studio, ale po wdrożeniu otrzymałem błąd 403.
Możesz sprawdzić, czy są zaszyfrowane, przechodząc do właściwości, a następnie do właściwości zaawansowanych i znajduje się zaszyfrowane pole wyboru.
Odznacz i nie będzie już problemu.
źródło
Mam ten sam problem z tym błędem (403 zabronione). W moim przypadku przyczyną jest to, że serwer proxy w mojej organizacji blokuje mój plik css. Nazwa pliku CSS pasuje do jednej z reguł blokowania.
źródło
Dowiedziałem się, że pliku bootstrap.css nie ma w folderze z zawartością, więc szukałem go w paczkach i wklejałem tam… zadziałało!
źródło