asp.net 3.5升级到4.0 IIS6 ReturnURL问题
我最近将一个项目从3.5升级到4.0,一切都很顺利,除了ReturnUrl没有做它的用途.项目结构:
所有项目都是asp.net 4.0: <?xml version="1.0"?> <configuration> <configSections> ... </configSections> <!--System.net Mail setup--> <system.net> <mailSettings> <smtp from="support@localhost"> <network host="localhost" port="25" defaultCredentials="true"/> </smtp> </mailSettings> </system.net> <appSettings> ... <add key="loginUrl" value="Login.aspx" /> <add key="defaultUrl" value="Home.aspx" /> </appSettings> <connectionStrings> <clear/> <add name="LocalSqlServer" connectionString="Data Source=localhost;Initial Catalog=aspnetdb_test;Integrated Security=True" providerName="System.Data.SqlClient"/> ... </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0"> <assemblies> ... <add assembly="System.Design,Version=4.0.0.0,Culture=neutral,PublicKeyToken=B03F5F7F11D50A3A"/></assemblies> </compilation> <customErrors mode="Off"/> <!--<customErrors mode="On" defaultRedirect="ErrorPage.aspx"> <error statusCode="403" redirect="PageNotFound.aspx"/> <error statusCode="404" redirect="PageNotFound.aspx"/> </customErrors>--> <pages enableSessionState="true" validateRequest="false" enableEventValidation="true" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"> <controls> ... </controls> </pages> <httpHandlers> ... </httpHandlers> <httpModules> <add name="Session" type="System.Web.SessionState.SessionStateModule"/> ... </httpModules> <httpRuntime maxRequestLength="458292"/> <authentication mode="Forms"> <!--<forms loginUrl="~/Login.aspx" defaultUrl="~/Home.aspx" protection="All" timeout="60" name=".ASPXFORMSAUTH" requireSSL="false" slidingExpiration="true" cookieless="UseCookies" enableCrossAppRedirects="false"/>--> <forms loginUrl="Login.aspx" protection="All" timeout="60" name=".ASPXFORMSAUTH" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="Home.aspx" cookieless="UseCookies" enableCrossAppRedirects="false" /> </authentication> <authorization> <allow roles="Admin"/> <allow roles="Student"/> <allow roles="Test"/> <deny users="*"/> <deny users="?"/> </authorization> <machineKey validationKey="..." decryptionKey="..." validation="SHA1"/> <membership defaultProvider="MembershipProvider"> <providers> ... </providers> </membership> <roleManager enabled="true" defaultProvider="RoleManagerSqlProvider"> <providers> ... </providers> </roleManager> <httpCookies httpOnlyCookies="true"/> <sessionState cookieless="AutoDetect"/> <trace enabled="false"/> </system.web> <location path="Home.aspx"> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </location> <location path="Login.aspx"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <location path="Logout.aspx"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <location path="AJAXServices"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <location path="SignIn.aspx"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <location path="ResetPassword.aspx"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <location path="About.aspx"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <location path="ErrorPage.aspx"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <location path="PageNotFound.aspx"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <location path="Assets"> <system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <!-- The system.webServer section is required for running ASP.NET AJAX under Internet Information Services 7.0. It is not necessary for previous version of IIS. --> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules runAllManagedModulesForAllRequests="true"> ... </modules> <handlers> ... </handlers> </system.webServer> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> </assemblyBinding> </runtime> </location> </configuration> 唯一有帮助的临时修复是Global.asax.cs protected void Application_BeginRequest(object sender,EventArgs e) { if (Request.AppRelativeCurrentExecutionFilePath == "~/") HttpContext.Current.RewritePath("Home.aspx"); } 然而,如果我使用IE 8/9导航到http://example.com/MyProject它会失败,但如果我这样做: 我搜索谷歌甚至这个网站有无数的解决方案,但似乎没有解决它为我.也许是由于这个项目位于其他项目的子目录中并且存在web.config冲突. 顺便说一句,在IIS中的身份验证方法中,将启用匿名访问,并且不会检查任何其他内容. 我不知道还有什么可能会把它扔掉.我试图让Home.aspx成为主页,或者Login.aspx并不重要. 附加信息: C:WINDOWSsystem32>cscript IisExt.vbs /ListFile Status / Extension Path ------------------------ 0 C:WINDOWSsystem32inetsrvhttpodbc.dll 1 C:WINDOWSsystem32inetsrvssinc.dll 1 C:WINDOWSsystem32inetsrvasp.dll 1 C:ColdFusion9runtimelibwsconfigjrun_iis6.dll 1 C:ColdFusion9runtimelibwsconfig1jrun_iis6_wildcard.dll 0 *.exe 0 C:WINDOWSsystem32inetsrvhttpext.dll 0 *.dll 1 c:WINDOWSMicrosoft.NETFramework64v2.0.50727aspnet_isapi.dll 1 C:WINDOWSMicrosoft.NETFramework64v4.0.30319aspnet_isapi.dll 也: C:WINDOWSmicrosoft.netFramework64v4.0.30319>aspnet_regiis -lk W3SVC/ 4.0.30319.0 W3SVC/1971902459/root/ 4.0.30319.0 W3SVC/1971902459/root/Project1/ 4.0.30319.0 W3SVC/1971902459/root/MyProject/ 4.0.30319.0 W3SVC/53091907/root/ 4.0.30319.0 解决方法
只想检查您是否已完全安装.Net 4.0.与IIS6一样,.Net 4.0可能存在一些奇怪的错误.
即使你已经安装它并在IIS中将其设置为正确的应用程序池,开箱即用它仍然无法正常工作. 使用以下指南确保.Net 4.0的.dll已注册,否则您将使用部分工作应用程序. http://johan.driessen.se/posts/getting-an-asp.net-4-application-to-work-on-iis6 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET WebApi OAuth2身份认证,搭建客户端(二)
- asp.net-mvc – ASP.NET MVC Metro Style
- asp.net-mvc-3 – 带有重音IE8的ASP MVC3 FileResult – 被
- asp.net – 什么是Html.AntiForgeryToken帮助函数?
- 错误处理 – 是否可以在ASP Classic中的try-catch像错误处理
- asp.net – 考虑Scalablity和友好URL的GUID替代方案
- asp.net-mvc – 从OWIN身份验证中间件中考虑控制器属性
- asp.net – 调用RenderSection两次?
- asp.net-mvc – MVC 5中的Web API属性路由异常:该对象尚未
- asp.net-mvc – 如何防止EnumDropDownListFor将0设置为opti