ASP.Net MVC – Errore non trovato nella risorsa

Sono completamente nuovo in ASP.Net MVC. Ho appena creato un progetto MVC3 in Visual Studio 2010. Il motore di visualizzazione è il razor. Quando ho appena eseguito l’applicazione, ha dato il risultato corretto nel browser. L’URL è http: // localhost: 4163 / . Quindi ho applicato “Imposta come pagina iniziale” a Index.cshtml all’interno della cartella ~ \ Views \ Home. Quindi quando ho eseguito l’applicazione l’url è diventato http: // localhost: 4148 / Views / Home / Index.cshtml e ha detto che la risorsa non può essere trovata. Cosa devo fare per correggerlo? Dove viene eseguita la mapping dell’URL?

File Global.asax:

using System.Web.Mvc; using System.Web.Routing; namespace TEST { public class MvcApplication : System.Web.HttpApplication { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); } } } 

La mapping degli URL o il “routing” sono gestiti da Global.asax nella radice del sito ASP.NET MVC.

Quando fai clic su “Imposta come pagina iniziale”, modifica le impostazioni del progetto per cercare quel file relativo alla radice dell’applicazione. Ma in MVC il percorso predefinito per la tua pagina indice è in realtà http://localhost:4163/Home/Index – leggi qualcosa del genere per avere un’idea di come funziona il routing.

Per “correggere” il tuo progetto ora che sta provando (e fallendo) a navigare direttamente nella vista, fai clic destro sul progetto e scegli ” Properties “, fai clic sulla scheda ” Web ” e scegli ” Specific Page “, lasciando vuota la casella di testo. Ora, quando inizi a eseguire il debug, dovresti tornare alla home page – guarda i parametri di instradamento predefiniti per capire perché nel metodo RegisterRoutes in Global.asax

Assicurati di aver creato una class HomeController.cs nella cartella del controller.

In un problema simile, la mia azione aveva un attributo “POST” HTTP, ma stavo tentando di aprire la pagina (di default è “GET”).

Quindi ho dovuto creare una versione HTTP “GET”.

Anch’io ho avuto lo stesso errore html-404:

Imansible trovare la risorsa. Descrizione: HTTP 404. La risorsa che stai cercando (o una delle sue dipendenze) potrebbe essere stata rimossa, il suo nome è stato modificato o temporaneamente non disponibile. Controlla il seguente URL e assicurati che sia stato digitato correttamente.

Ma dopo un attento esame, ho scoperto che avevo lasciato il nome del controller come Default1Controller invece di cambiarlo in HomeController . Quando ho apportato le modifiche e ho eseguito il debug dell’applicazione, ha funzionato. Spero che ti possa aiutare se hai lo stesso problema.

Seguire i passaggi seguenti per eseguire l’applicazione asp.net mvc.

  • Creazione del controller
    Fare clic con il tasto destro sulla cartella dei controller e aggiungere il controller. Nota: non rimuovere Controller Postfix. Le sue convenzioni MVC ASP.NET.
    Dare un nome al controller come “DemoController” e si può vedere l’azione “Index” è presente in “DemoController”. “Indice” è l’azione predefinita presente quando creerai un controller.

  • Visualizza la creazione
    Fare clic con il pulsante destro del mouse sul nome dell’azione “Indice” e mantenere il nome della vista predefinita, ad esempio “Indice” e fare clic sul pulsante “Aggiungi”.

  • Impostazione del percorso
    Apri il file Global.asax, poi vedrai che l’impostazione predefinita della rotta è mappata al controller “Home” e l’azione “Indice” la cambia in “Demo” e l’azione “Indice”. La mapping degli URL è scritta nel file Global.asax. Quando apri il file Global.asax, vedrai le seguenti impostazioni:

     routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); 

    Cambiarlo in:

     routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Demo", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); 

E esegui la tua applicazione per vedere la tua applicazione in funzione.

Bene, non è ansible impostare la pagina predefinita in asp.net mvc.
Vai a global.asax.cs e guarda la definizione di routing. La rotta predefinita punta al metodo Indice HomeController.
Farò meglio a guardare qualche breve film su asp.net mvc o provare a trovare un tutorial per nerd dinner che ti farà familiarizzare con il framework abbastanza rapidamente.

Penso che le migliori risposte sui tutorial siano già state fornite come risposte a questa domanda:

Esercitazioni rapide di ASP.NET MVC

Incredibilmente, ho cancellato per errore la parola chiave pubblica dal controller!

inserisci la descrizione dell'immagine qui

Immagino che questo non aiuti proprio nessun altro, ma non si sa mai …

In asp.net mvc non puoi usare l’opzione ‘imposta come pagina iniziale’, perché le viste di mvc non sono indipendenti, come le pagine dei moduli web. Sono solo i file modello per la visualizzazione del modello. Non hanno alcun modulo http di elaborazione. Tutte le richieste web devono passare attraverso le azioni del controllore, non è ansible richiedere direttamente le viste.

Ho avuto un problema simile qualche tempo fa quando usavo VS 2012. Risolto semplicemente ricostruendo l’applicazione facendo clic su Costruisci> Ricostruisci.

Se stai usando IIS Express. Può essere che tu abbia aperto un altro progetto che usa la stessa directory virtuale. Quando hai aperto la seconda soluzione, VS rimappa la directory di IIS in un’altra posizione. Come risultato, non funzionerà con problemi diversi. Ho avuto lo stesso errore di topic topic.

Per risolvere: chiudere tutte le istanze di VS Studio. Apri VS con il progetto che stai lavorando e ricostruisci.

Aggiungendo semplicemente questo qui – se qualcuno sta riscontrando problemi in cui la pagina dell’indice sul controller domestico non si carica più, potrebbe essere perché non hai ancora configurato il tuo progetto StartUp . Fai clic con il pulsante destro del mouse sul progetto a cui desideri avviare la tua app e impostalo come progetto di avvio, e dovresti essere pronto.

(MVC 5): Modifica RouteConfig.cs per includere due routes come questo:

  routes.MapRoute( name: "DefaultWithLanguage", url: "{language}/{controller}/{action}/{id}", defaults: new { language = "fa", controller = "Home", action = "Index", id = UrlParameter.Optional }, constraints: new {language= "[az]{2}"} ); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { language = "fa", controller = "Home", action = "Index", id = UrlParameter.Optional } ); 

quindi, quando la parte della lingua del percorso non viene specificata, non confonde i nomi dei controller che non corrispondono alla regex "[az]{2}" e sostituisce la lingua predefinita e reindirizza al resto della rotta …

La pagina iniziale del progetto asp.net mvc è defaulty “Pagina corrente”. Basta aprire un file sul lato server e avviare il progetto. in questo modo mvc apre il controller predefinito che è homecontroller per il tuo progetto

È ansible modificare la pagina iniziale all’interno delle proprietà del progetto (progetto -> proprietà del progetto). Nella scheda Web è ansible selezionare la specify page e modificare la pagina iniziale in home/ or home/index . Questo ti indirizzerà alla pagina corretta in base ai tuoi percorsi. L’indirizzo di http: // localhost: 4148 / Views / Home / Index.cshtml non funziona in modo specifico perché viene gestito in base ai percorsi in cui viene indicato che l’URL deve essere http: // localhost: 4148 / {controller } / {azione} e un / / id opzionale.

Se vuoi saperne di più sul routing dai un’occhiata qui.

Per vedere la tua vista in questo modo:

 http://localhost:1234/x/MyView 

Nel file xController.cs, nella cartella Controllers,

assicurati di aggiungere un metodo ActionResult come questo:

 public ActionResult MyView() { return View(whatever); } 

Ho anche ricevuto questo messaggio quando non stavo riferendo correttamente il nome del mio modello:

@using (Html.BeginForm (“MyView”, “MyModel”, FormMethod.Get))

nella barra degli indirizzi dell’input del browser come questo: ControllerName / ActionMethod non input ControllerName / ViewName per esempio nella barra degli indirizzi: http: // localhost: 55029 / test2 / getview codice file cshtml:

 @{ Layout = null; }     MyView   

e il codice file cs:

 public ActionResult GetView() { return View("MyView"); } 

Se hai provato tutte le soluzioni di cui sopra e il problema persiste, utilizza questa semplice soluzione. Apri facebook debugger da questo link , digita url di pagina e fai clic sul pulsante Recupera nuove informazioni su Scrape. Questo risolverà il tuo problema.

Il motivo dietro (cosa penso) è che Facebook API salva lo stato attuale della pagina e mostra lo stesso dal proprio server. se fai clic sul pulsante Condividi mentre codifichi e la tua pagina non è effettivamente caricata, Facebook API non è in grado di trovare quella pagina sul server e salva lo stato della pagina come “risorsa non trovata”. Ora continuerà a mostrare lo stesso messaggio anche dopo aver caricato la pagina. Quando si recupera la pagina dal debugger di Facebook, si risolve tutto da zero e si salva lo stato corrente della pagina e quindi il pulsante di condivisione inizia a funzionare senza alcuna modifica nella codifica.

Ho avuto lo stesso tipo di problema, tranne che non stavo usando il nome Index.cshtml per la mia View , l’ho fatto ad esempio LandingPage.cshtml , il mio problema era che ActionResult nel mio controller non era lo stesso nome del mio View Name ( In questo caso il mio ActionResult si chiamava Index ()) – Questo è in realtà ovvio e un errore stupido da parte mia, ma non nuovo a MVC, quindi fallirò con le basi qua e là.

Quindi nel mio caso avevo bisogno di cambiare ActionResult per avere lo stesso nome della mia View : LandingPage.cshtml

  public ActionResult LandingPage() { ProjectDetailsViewModels PD = new ProjectDetailsViewModels(); List PDList = new List(); PDList = GetProductList(); PD.Projectmodel = PDList; return View(PD); } 

Sono nuovo di MVC, quindi forse questo aiuterà qualcun altro che è nuovo e alle prese con la stessa cosa che ho fatto.

Per me il problema è stato causato da un problema di namespace.

Avevo aggiornato il mio spazio dei nomi di progetto nelle mie classi di progetti web da MyProject a MyProject.Web, ma avevo dimenticato di aggiornare Proprietà progetto >> Spazio dei nomi predefinito. Quindi quando ho aggiunto un nuovo controller stava usando il vecchio spazio dei nomi. Tutto quello che dovevo fare era correggere lo spazio dei nomi nel nuovo controller e ha funzionato.

Avevo un controller chiamato usersController, quindi ho provato a crearlo nella pagina iniziale cambiando il controller di default da Home a usersController come indicato di seguito.

  public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "usersController", action = "Index", id = UrlParameter.Optional } ); } 

La soluzione era di cambiare il valore predefinito del controller per gli utenti piuttosto che per gli utentiController

  public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "users", action = "Index", id = UrlParameter.Optional } ); } 

Risolto il problema facendo clic con il tasto destro sulla vista che volevo come pagina di avvio Dopo aver visualizzato l’errore “La risorsa che stai cercando non può essere trovata” Fai semplicemente clic con il pulsante destro del mouse sul tuo progetto, vai al web e seleziona Pagina corrente. Questo risolverà il problema