2012-12-11 2 views
0

편집 IIS를 내가 비주얼 개발 서버를 사용하고 글쎄 내 dev에 컴퓨터에서 잘 작동의 asp.net MVC 3 7.5 404 오류

. 그러나 Use Local IIS WebServer (프로젝트 URL은 http://localhost/myapp으로 설정)로 설정하면 작동하지 않습니다. 401 오류가 발생합니다.

msdeploy와 IIS 7.5를 사용하는 Visual Studio 2010의 응용 프로그램을 apps.mydomain.com/myapp이라는 사이트로 잘 배포하십시오. 따라서 본질적으로 http://apps.mydomain.com/myapp으로 이동하려고하지만 404 오류가 발생하면

  • 사이트에서만 Windows 인증을 사용할 수 있습니다. 다른 모든 것은 사용할 수 없습니다.
  • http://support.microsoft.com/kb/980368 핫픽스를 설치했습니다.
  • 응용 프로그램 풀 .NET 4 통합 파이프 라인. 고전적인 파이프 라인을 시도했지만 작동하지 않습니다.
  • 실행을 % windir %의 \ Microsoft.NET \ Framework64 \ v4.0.30319 \ -ir 여전히 내가 잘못 뭐하는 거지

작동하지 않거나 내가 무엇을 어떻게해야합니까 다음 aspnet_regiis.exe? 당신이 바인딩에 문제를 가지고있는 것처럼

Global.asax에

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new AuthorizeAttribute()); 
     filters.Add(new HandleErrorAttribute()); 
    } 

    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");    
     routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });  

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

의 Web.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    <sectionGroup name="elmah"> 
     <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" /> 
     <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" /> 
     <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" /> 
     <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" /> 
    </sectionGroup> 
    </configSections> 
    <appSettings> 
    <add key="webpages:Version" value="1.0.0.0" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    <add key="elmah.mvc.disableHandler" value="false" /> 
    <add key="elmah.mvc.disableHandleErrorFilter" value="false" /> 
    <add key="elmah.mvc.requiresAuthentication" value="false" /> 
    <add key="elmah.mvc.allowedRoles" value="*" /> 
    <add key="elmah.mvc.route" value="elmah" /> 
    <add key="autoFormsAuthentication" value="false" /> 
    <add key="enableSimpleMembership" value="false" /> 
    </appSettings> 
    <system.web> 
    <customErrors mode="On" defaultRedirect="~/error"> 
     <error statusCode="404" redirect="~/error/notfound"></error> 
    </customErrors> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     </assemblies> 
    </compilation> 

    <authentication mode="Windows" /> 

    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
    <httpModules> 
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> 
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
    </httpModules> 
    </system.web> 
    <system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
     <remove statusCode="404" /> 
     <error statusCode="404" responseMode="ExecuteURL" path="~/error/notfound" /> 
     <remove statusCode="500" /> 
     <error statusCode="500" responseMode="ExecuteURL" path="~/error" /> 
    </httpErrors> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" /> 
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" /> 
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" /> 
    </modules> 
    </system.webServer> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    </entityFramework> 
    <connectionStrings> 

    </connectionStrings> 
    <elmah> 
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="Elmah.Sql" /> 
    <security allowRemoteAccess="true" /> 
    </elmah> 
    <location path="elmah.axd" inheritInChildApplications="false"> 
    <system.web> 
     <httpHandlers> 
     <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
     </httpHandlers> 

     <authorization> 
     <allow roles="admin" /> 
     <deny users="*" /> 
     </authorization> 
     --> 
    </system.web> 
    <system.webServer> 
     <handlers> 
     <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" /> 
     </handlers> 
    </system.webServer> 
    </location> 
</configuration> 
+0

가능하면 문제가되는 서버에 원격으로 연결하여 페이지를 로컬로 요청해야합니다. 그 밖의 것이 없다면 404보다 유용한 오류가 발생해야합니다. –

+0

응용 프로그램 풀이 Classic 또는 Integrated (통합 필요)인지 확인 할 수 있습니다 – heads5150

+1

사이트 루트에 HTML 파일 놓기 브라우저에서? 그렇지 않은 경우 DNS 확인 문제 일 수 있습니다. 도메인이 서버의 IP 주소를 명확히 확인합니까? – levelnis

답변

0

보인다.

또한 DNS에서 apps.mydomain.com을 확인할 수 있습니다.

P. 경로가 확실하지 않은 경우이 멋진 작은 라이브러리를 사용할 수 있습니다. http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

+0

"@nZeus"바인딩에 대한 문제에 대해 당신이 맞다고 생각합니다. 새 dns 항목 myapp.mydomain.com을 만들었습니다 (원래 위치는 작동하지 않는 apps.mydomain.com/myapp였습니다). 그리고 내 mvc 응용 프로그램이이 URL에 표시됩니다. 왜 그럴까요? – dm80

+0

http://apps.mydomain.com을 입력하면 어떻게됩니까? IIS 시작 페이지 또는 웹 사이트 콘텐츠가 표시되어야합니다. 404가 표시되면 "ping apps.mydomain.com"및 "tracert apps.mydomain.com"을 권장 행에 입력하십시오. – nZeus