source

ASP.Net MVC – 리소스를 찾을 수 없음 오류

nicesource 2023. 6. 28. 21:49
반응형

ASP.Net MVC – 리소스를 찾을 수 없음 오류

저는 ASP.Net MVC에 완전히 익숙하지 않습니다.방금 Visual Studio 2010에서 MVC3 프로젝트를 만들었습니다.뷰 엔진은 면도기입니다.방금 앱을 실행했을 때 브라우저에 적절한 결과가 표시되었습니다.URL은 http://localhost:4163/입니다.그런 다음 ~\Views\Home 폴더 안에 있는 Index.cshtml에 "시작 페이지로 설정"을 적용했습니다.그런 다음 애플리케이션을 실행하면 URL이 http://localhost:4148/Views/Home/Index.cshtml이 되고 리소스를 찾을 수 없다고 합니다.수정하려면 어떻게 해야 합니까?URL 매핑은 어디에서 수행됩니까?

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);
    }
    }
 }

URL 매핑 또는 "라우팅"은 ASP.NET MVC 사이트의 루트에 있는 Global.asax에 의해 처리됩니다.

시작 페이지로 설정을 누르면 응용프로그램 루트와 관련된 해당 파일을 찾도록 프로젝트 설정이 변경됩니다.그러나 MVC에서 인덱스 페이지의 기본 경로는 사실http://localhost:4163/Home/Index라우팅이 어떻게 작동하는지에 대한 아이디어를 얻기 위해 이와 같은 것을 읽습니다.

있는 를 마우스 오른쪽 하고 "fix"를선택합니다.Properties를 클릭합니다.Web탭하고 "를 선택합니다.Specific Page텍스트 상자를 비워 둡니다. 디버깅을 홈합니다. Global 변수를 하십시오. Global.asax의 RegisterRoutes 메서드에서 기본 경로 매개 변수를 확인하십시오.

컨트롤러 폴더에 HomeController.cs 클래스를 생성했는지 확인합니다.

제가 직면한 유사한 문제에서, 제 Action은 HTTP "POST" 속성을 가지고 있었지만, 저는 페이지를 열려고 했습니다(기본적으로 "GET").

그래서 저는 HTTP "GET" 버전을 만들어야 했습니다.

놀랍게도, 제가 실수로 컨트롤러에서 공용 키워드를 삭제했습니다!

enter image description here

아무도 도움이 되지 않을 거라 생각하지만, 당신은 절대로...

저도 같은 html-404 오류가 발생했습니다.

리소스를 찾을 수 없습니다.설명: HTTP 404.찾으려는 리소스(또는 해당 종속성 중 하나)가 제거되었거나 이름이 변경되었거나 일시적으로 사용할 수 없습니다.다음 URL을 검토하여 철자가 올바른지 확인하십시오.

하지만 자세히 조사한 결과 컨트롤러 이름을 다음과 같이 남겨두었습니다.Default1Controller 바꾸는 HomeController내가 변경하고 앱을 디버깅했을 때 작동했습니다.당신이 같은 문제를 가지고 있다면 도움이 되기를 바랍니다.

asp.net mvc 응용 프로그램을 실행하려면 다음 단계를 수행합니다.


  • 컨트롤러 폴더를 마우스 오른쪽 버튼으로 클릭하고 컨트롤러를 추가합니다.참고 - 컨트롤러 포스트픽스를 제거하지 않습니다.ASP.NET MVC 파일입니다.
    "DemoController"라는 이름의 "DemoController"라는 이름의 "Index"입니다. "Index 기본 Index"는 컨트롤러를 만들 때 나타나는 기본 작업입니다.

  • 보기
    Index" 오른쪽 단추로하고 "Index후"Add합니다.Index" 수행 이름을 마우스 오른쪽 단추로 클릭하고 기본 보기 이름(예: "Index")을 유지한 후 "Add" 단추를 클릭합니다.

  • 설정
    Global.asax 파일을 열면 경로의 기본 설정이 "홈" 컨트롤러에 매핑되고 "인덱스" 액션이 "데모" 컨트롤러 및 "인덱스" 액션으로 변경되는 것을 볼 수 있습니다.URL 매핑은 Global.asax 파일에 기록됩니다.Global.asax 파일을 열면 다음 설정이 나타납니다.

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

    다음으로 변경:

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

그리고 응용프로그램을 실행하면 응용프로그램이 작동하는 것을 볼 수 있습니다.

.net에서는 기본 할 수 . mvc.asp.net mvc는 기본 페이지입니다.
.asax.cs하여 routing.global.asax.cs 의 하십시오.기본 경로는 인덱스 메서드 홈 컨트롤러를 가리킵니다.
당신은 asp.net mvc에 관한 짧은 영화를 보거나 프레임워크에 꽤 빨리 익숙해질 괴짜 저녁 튜토리얼을 찾는 것이 좋을 것입니다.

튜토리얼에 대한 최고의 답변은 이미 이 질문에 대한 답변으로 제공되었다고 생각합니다.

ASP.NET MVC 빠른 자습서

얼마 전 VS 2012를 사용할 때도 비슷한 문제가 있었습니다.빌드 > 재구성을 클릭하여 응용프로그램을 다시 빌드하면 해결됩니다.

asp.net mvc에서는 웹 양식 페이지와 같이 mvc 보기가 독립적이지 않기 때문에 '시작 페이지로 설정' 옵션을 사용할 수 없습니다.모델을 표시하기 위한 템플릿 파일입니다.처리 중인 http 모듈이 없습니다.모든 웹 요청은 컨트롤러 작업을 통해 전달되어야 하며, 직접 보기를 요청할 수 없습니다.

IIS Express를 사용하는 경우동일한 가상 디렉터리를 사용하는 다른 프로젝트를 열었을 수 있습니다.두 번째 솔루션을 열면 VS가 해당 IIS 디렉토리를 다른 위치로 다시 매핑합니다.결과적으로 다른 문제에서는 작동하지 않습니다.토픽 스타터와 동일한 오류가 있었습니다.

수정 방법: VS Studio의 모든 인스턴스를 닫습니다.작업 중인 프로젝트로 VS를 열고 재구축합니다.

여기에 이 항목을 추가하면 홈 컨트롤러의 인덱스 페이지가 더 이상 로드되지 않는 문제가 있는 경우 시작 프로젝트를 아직 설정하지 않았기 때문일 수 있습니다.앱을 시작할 프로젝트를 마우스 오른쪽 단추로 클릭하고 시작 프로젝트로 설정하면 바로 이동할 수 있습니다.

5MVC 5): 변경하기RouteConfig.cs 개의 두개포하여함을 routes다음과 같이:

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

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

따라서 경로의 언어 부분이 지정되지 않은 경우 정규식과 일치하지 않는 컨트롤러 이름을 실수하지 않습니다."[a-z]{2}"기본 언어를 대체하고 나머지 경로로 리디렉션...

저에게 이 문제는 네임스페이스 문제로 인해 발생했습니다.

웹 프로젝트 클래스에서 MyProject에서 MyProject로 프로젝트 네임스페이스를 업데이트했습니다.웹, 그러나 나는 프로젝트 속성 >> 기본 네임스페이스를 업데이트하는 것을 잊었습니다.따라서 새 컨트롤러를 추가했을 때 컨트롤러는 이전 네임스페이스를 사용하고 있었습니다.새 컨트롤러에서 네임스페이스를 수정하기만 하면 작동했습니다.

HomeController.cs 을 사용한 간단한 솔루션:

Controllers 폴더에서 HomeController.cs 파일을 엽니다.코드 추가:

public ActionResult Edit()
{
    return View();
}

이제 다른 컨트롤러(HomeController가 아님)를 사용하는 경우:

보기를 다음과 같이 보는 방법:

http://localhost:1234/xyz/MyView

xyzController.cs 파일의 Controllers 폴더에서

다음과 같은 ActionResult 메서드를 추가해야 합니다.

public ActionResult MyView()
{
    return View(myView); //pass in your view if you want.
}

또한 모델 이름을 올바르게 참조하지 않았을 때 다음과 같은 메시지가 표시되었습니다.

@(Html 사용).양식("MyView", "MyModel", 양식 메서드)을 시작합니다.가져오기)

asp.net mvc 프로젝트의 시작 페이지는 기본적으로 "현재 페이지"입니다.서버 측 파일을 열고 프로젝트를 시작하기만 하면 됩니다.그런 식으로 mvc는 프로젝트의 홈 컨트롤러인 기본 컨트롤러를 엽니다.

프로젝트 속성(프로젝트 -> 프로젝트 속성) 내의 시작 페이지를 변경할 수 있습니다.에서 웹탭서선수있다니습할택을 선택할 수 .specify page 시작 를 작페를다변로음경니다합으지이시▁to로 변경합니다.home/또는home/index경로에 따라 적절한 페이지로 이동합니다.http://localhost:4148/Views/Home/Index.cshtml의 주소는 URL이 http://localhost:4148/{controller}/{action}이고 선택적인 /{id}이어야 하는 경로에 따라 처리되고 있기 때문에 특별히 작동하지 않습니다.

라우팅에 대한 자세한 내용은 여기를 참조하십시오.

다음과 같은 브라우저 입력의 주소 표시줄:ControllerName/ActionMethod가 ControllerName/ViewName을 입력하지 않음(예: 주소 표시줄: http://localhost:55029/test2/getview cshtml 파일 코드:

@{
Layout = null; 
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>MyView</title>
</head>
<body>
<div>            
</div>
</body>
</html>

및 cs 파일 코드:

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

위의 모든 솔루션을 시도했지만 여전히 문제가 지속되는 경우 이 간단한 솔루션을 사용합니다. 링크에서 Facebook 디버거를 열고 페이지 url을 입력한 다음 새 스크래치 정보 가져오기 버튼을 클릭합니다.이것으로 문제가 해결될 것입니다.

페이스북 api가 페이지의 현재 상태를 저장하고 자체 서버에서 동일하게 표시하기 때문이라고 생각합니다.코딩하는 동안 공유 버튼을 클릭하고 실제로 페이지가 업로드되지 않으면 Facebook api는 서버에서 해당 페이지를 찾을 수 없고 페이지 상태를 "resource not found"로 저장합니다.이제 페이지를 업로드한 후에도 동일한 메시지가 계속 표시됩니다.Facebook 디버거에서 페이지를 가져오면 처음부터 모든 것을 해결하고 페이지의 현재 상태를 저장한 다음 코드 변경 없이 공유 버튼이 작동하기 시작합니다.

문제가 , 가 이을사용않는것을제있다같라는 하지 않았다는 하고는요.Index.cshtml나로서는View예를 들어 만들었습니다.LandingPage.cshtml나의 문제는 그것이었습니다.ActionResult 경우 는 Index와 이름이 . - MVC는 .in myController의 myViewName("Index()는 실패합니다. 저는 MVC에 익숙하지 않기 때문에 여기저기서 기본적인 것을 실패할 것입니다.

그래서 나의 경우에는 나의 것을 바꿀 필요가 있었습니다.ActionResult의 내이과같것은름▁와 같은 것.View:LandingPage.cshtml

    public ActionResult LandingPage()
    {
        ProjectDetailsViewModels PD = new ProjectDetailsViewModels();
        List<ProjectDetail> PDList = new List<ProjectDetail>();

        PDList = GetProductList();
        PD.Projectmodel = PDList;


        return View(PD);
    }

저는 MVC가 처음이라, 아마도 이것은 제가 했던 것과 같은 일로 어려움을 겪고 있는 새로운 누군가에게 도움이 될 것입니다.

저는 usersController라는 컨트롤러가 있어서 아래와 같이 기본 컨트롤러를 Home에서 usersController로 변경하여 시작 페이지를 만들려고 했습니다.

 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 }
        );
    }

솔루션은 컨트롤러 기본값을 사용자가 아닌 사용자로 변경하는 것이었습니다.Controller

 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 }
        );
    }

시작 페이지로 원하는 보기를 마우스 오른쪽 단추로 클릭하여 문제 해결 "찾는 리소스를 찾을 수 없습니다" 오류를 표시한 후 프로젝트를 마우스 오른쪽 단추로 클릭하고 웹으로 이동한 후 현재 페이지를 선택합니다.그것이 문제를 해결할 것입니다.

언급URL : https://stackoverflow.com/questions/9293778/asp-net-mvc-resource-cannot-be-found-error

반응형