默认文档未显示完整的URL。

7
我有一个关于iis默认文档设置的问题。在我的网站(http://mysite)中,我提供了登录页面作为默认文档。当用户输入网址(http://mysite)时,它会重定向用户到登录页面,但不显示完整的网址(http://mysite/login.aspx)。看起来默认文档使用的是server.transfer而不是response.redirect。因此,当用户输入他们的凭据后,再单击“登录”,它会再次将他们重定向到登录页面,从那里开始就正常工作了。所以用户必须输入两次凭据。
我的应用程序是在.NET 3.5上开发的。
有没有一种方法可以实现response.redirect?
3个回答

3

在您的基础目录中使用index.html作为默认文档。在此index.html中,使用meta refresh或javascript redirect将其重定向到login.aspx页面。请参见以下示例meta refresh代码。

您的项目

website 
   index.html
   secure/login.aspx

index.html

<!DOCTYPE html>
<html>
<head>
<title>YOUR PROJECT NAME</title>
    <meta http-equiv="refresh" content="0;URL='http://www.YOURDOMAIN:COM/secure/login.aspx'" />    
</head>

<body>
    <p> Click to   
        <a href="http://www.YOURDOMAIN:COM/secure/login.aspx">Login</a>
   </p> 

</body>

</html>

2
在与默认文档相同的文件夹中,放置名为web.Config的文本文件(不带.txt、.xml或任何其他扩展名),其内容如下所示:
<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect to login" stopProcessing="true"> 
                    <match url=".*" />
                    <conditions>
                         <add input="{URL}" pattern="^/$" />
                    </conditions>
                    <action type="Redirect" url="/login.aspx" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

你好,你的意思是我应该在我的登录页面所在的文件夹中放置另一个web.config文件吗?我的登录页面位于不同的文件夹中,它不是直接位于根文件夹下面。 - Punit
另外一个?在一个文件夹中,一个文件名只能使用一次。如果您在该文件夹中有现有的 web.config,则必须将其与此 XML 代码合并。 - Chawathe Vipul S
可能比被接受的解决方案更好,谢谢! - Vitor Ceolin

0
在您的登录页面的Page_Init中编写以下行。
Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
    If Not MyBase.IsPostBack Then
        If HttpContext.Current.Request.Url.ToString.Contains("Login") = False Then
            Response.Redirect("~/Login.aspx")
        End If
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接