加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net 3.5升级到4.0 IIS6 ReturnURL问题

发布时间:2020-12-16 09:49:55 所属栏目:asp.Net 来源:网络整理
导读:我最近将一个项目从3.5升级到4.0,一切都很顺利,除了ReturnUrl没有做它的用途.项目结构: 所有项目都是asp.net 4.0: 1.(root):http://example.com 2.(Project1)http://example.com/Project1 3.(MyProject)http://example.com/MyProject - 虚拟目录.这个项目
我最近将一个项目从3.5升级到4.0,一切都很顺利,除了ReturnUrl没有做它的用途.项目结构:

所有项目都是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: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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读