문제

어디에서 찾을 수 있습니 몇 가지 좋은 포인터에서 실행에 대한 모범 사례 ASP.NET MVC 에 lls6 에?

나는 보지 못했에 대한 현실적인 옵션은 웹 호스트를 제공하는 IIS7-호스팅은 아직입니다.주로 살고 있지 않기 때문에 미국에서

그래서 나는지 궁금하는 방법에 대한 최고의 건축에서 응용 프로그램 ASP.NET MVC 고 쉽게 배포할 수 있는 모두에서 lls6 에와 IIS7.염두에 두는 것 이 표준 웹 호스트,그래서 액세스할 수 없는 ISAPI 필터 또는 특수 설정 내부 lls6 에.

은 거기에 다른 것 중 하나에 대해 생각해야 할 때 개발 ASP.NET MVC-을 대상으로 하는 응용 프로그램 lls6 에?모든 기능이 작동하지 않는 이유는 무엇입니까?

업데이트:하나의 더 큰 문제는 것은 노선이 있습니다.패턴{컨트롤러}/{action}에서 작동합니다 IIS7 지만,lls6 에는 필요{컨트롤러}.mvc/{action}.그래서 어떻게 만들이 투명한?시 아 ISAPI아 IIS-설정, 하십시오.

도움이 되었습니까?

해결책

그것은 내게 조금,하지만 나를 만드는 방법을 알아 냈 확장 작업 IIS6.첫째,필요시 작성 기반 라우팅을 포함합니다.aspx 도록 그들을 통해 라우팅 ASP.NET ISAPI 필터입니다.

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

는 경우에 당신은 집으로 이동.aspx,예를 들어,귀하의 사이트할 수 있습니다.그러나 기본입니다.aspx 와의 기본 페이지의 주소 http://[웹사이트]/ 올바르게 작동을 멈출 수 있습니다.그래서 어떻게는 고정?

만,당신은을 정의해야 하는 두 번째 날고있다.불행하게도,기본값을 사용합니다.aspx 로 제대로 작동하지 않:

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

그래서 당신이 어떻게 작동하려면 이?만,이것은 당신이 필요로 원래의 라우팅 코드:

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

이 경우,기본입니다.aspx http://[웹사이트]/ 모두 다시 작업을 시작,내가 생각하기 때문에 그들은 성공적으로 매핑을 홈 컨트롤러입니다.그래서 완벽한 솔루션입니다:

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

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

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}

사이트 작업을 시작해야만에서 IIS6.(최소한 그것이 나 PC.)

과로 보너스를 사용하는 경우,Html.ActionLink()페이지에서,당신은 당신을 변경할 필요가 없는 다른 코드의 라인 전체에 걸쳐 사이트입니다.이 방법은 제대로 처리 태그.aspx 확장하여 컨트롤러입니다.

다른 팁

할 수 없기 때문에 수정할 수 IIS 설정합니다.mvc 하기 ASP.Net 사용할 수 있습니다,다른 확장자는 이미 매핑 ASP.Net.예를 들어,사용할 수 있습{컨트롤러}.ashx/{action}및 작동해야에 있는 상자에서 IIS6.

당신은 살아야 하지 않는 확장자를 설치할 수 있는 ISAPI 필터를 사용하여 서버에 있습니다.

기본적으로 당신은 경로 일치하는 url 을하기{}.mvc 다양한에서 다음 ASP.NET 당신이 다시는 이는 url 을 제거합니다.mvc--이렇게 당신이 정의하지 않아도 모든 경로를 추가하거나 노출한다.mvc 를 사용자에게 있습니다.

나는에 대해 작성이 여기:http://www.flux88.com/UsingASPNETMVCOnIIS6WithoutTheMVCExtension.aspx

와 스티브 샌더슨가 좋은 포스트뿐만 아니라 여기: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

에서 언급했듯이 블로그 게시물 필 해킹,그것이 가능한 설정 확장자 보다 적게 Url ASP.NET MVC IIS6 에서 사용 와일드카드 매핑은 응용 프로그램:

  1. 에서 IIS6 일에 가서 응용 프로그램 구성 속성에 대한 귀하의 ASP.NET MVC 웹 응용 프로그램입니다.
  2. "를 클릭 Insert..."에서 와일드카드 응용 프로그램지도 섹션입니다.
  3. 설정된 실행 파일의 경로 aspnet_isapi.dll (내 컴퓨터에서 이 c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll).
  4. 는지 확인하지 않을 확인하는"파일이 있는지 확인"그리고"확인"을 클릭합니다.

그러나 그 또한 언급에 의해 해킹,거기에 몇 가지 성과의 의미에 이것을 하고 있다.

와 lls6 에 중 하나를 수행할 수 있습니다 두 가지:

  1. 설치는 ISAPI 필터를 지도 MVC Url ASP.NET
  2. 포함하는 확장에서 URL.예를 들어:htp://localhost/Home.mvc

이 옵션 1 에서 사용할 수 없는 대부분의 웹 호스팅,당신은 당신을 위해 가호 2.

Url 재작성할 수 있습 문제를 해결합니다.을 구현한 솔루션을 할 수 있도록 배포 MVC 응용 프로그램에서 IIS 버전 경우에도 가상호스트가 사용됩니다.http://www.codeproject.com/KB/aspnet/iis-aspnet-url-rewriting.aspx

샘플 응용 프로그램에 lls6 에.

내가 발견하고 솔루션입니다.(더러운 포함하고 있기 때문에 기본 뷰 이름 확장자를 가진)이 필요하지 않은 추가적인 경로,또는 특별하다.(제외하고,기본 경로{컨트롤러}.aspx/{action}...형식)

여기에서 기본값이다.aspx

<%@ Page Language="C#"%>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    HttpContext.Current.RewritePath("~/Home.aspx/index");
    IHttpHandler httpHandler = new MvcHttpHandler();
    httpHandler.ProcessRequest(HttpContext.Current);
}
</script>

나의 샘플 응용 프로그램의 기본 조치가 지수,가정에서는 디렉토리에 있습니다.

참고:이에 코드를 필 Haack 의 블로그입니다.덕분에 브라이언할 수 있습니다.

나는 대한 자세한 단계별 안내,그러나 그것을 사용해야 합 isapi_rewrite.에 그것을 볼: http://biasecurities.com/blog/2008/how-to-enable-pretty-urls-with-asp-net-mvc-and-iis6/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top