所有项目都是asp.net 4.0:
1.(root):http://example.com
2.(Project1)http://example.com/Project1
3.(MyProject)http://example.com/MyProject< - 虚拟目录.这个项目有问题. 这是我的web.config:
<?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它会失败,但如果我这样做:
http://example.com/MyProject/(添加了/)它的工作原理.是不是defaultUrl假设重定向到主应用程序?为什么returnUrl指向
http://example.com/MyProject/Login.aspx?ReturnUrl=%2fMyProject%2f
我搜索谷歌甚至这个网站有无数的解决方案,但似乎没有解决它为我.也许是由于这个项目位于其他项目的子目录中并且存在web.config冲突.
顺便说一句,在IIS中的身份验证方法中,将启用匿名访问,并且不会检查任何其他内容.
我不知道还有什么可能会把它扔掉.我试图让Home.aspx成为主页,或者Login.aspx并不重要.
附加信息:
C:\WINDOWS\system32>cscript IisExt.vbs /ListFile Status / Extension Path ------------------------ 0 C:\WINDOWS\system32\inetsrv\httpodbc.dll 1 C:\WINDOWS\system32\inetsrv\ssinc.dll 1 C:\WINDOWS\system32\inetsrv\asp.dll 1 C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll 1 C:\ColdFusion9\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll 0 *.exe 0 C:\WINDOWS\system32\inetsrv\httpext.dll 0 *.dll 1 c:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll 1 C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll
也:
C:\WINDOWS\microsoft.net\Framework64\v4.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
解决方法
即使你已经安装它并在IIS中将其设置为正确的应用程序池,开箱即用它仍然无法正常工作.
使用以下指南确保.Net 4.0的.dll已注册,否则您将使用部分工作应用程序.
http://johan.driessen.se/posts/getting-an-asp.net-4-application-to-work-on-iis6
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。