我正在使用ASP.NET 4 / VB.NET / IIS来构建Web应用程序。人们将通过如下URL访问Web应用程序:
因此,例如,这里分别是Jane Doe,John Doe和James Doe的网址:
我需要以某种方式将它们(无论输入什么名称)传递给default.aspx页面,然后该页面将引入URL的名称部分并使用它来对包含信息的数据库执行查找。关于这个特定的人,并根据该信息显示个性化页面。
因此,例如,Jane Doe访问:
她被透明地重定向到default.aspx,它会输入她的名字(来自上面的url)并对照数据库进行检查。看到她以前从未访问过这个网站,她被透明地重定向到welcome.aspx,要求她注册一个账号,“Hello Jane!”等等...
下次Jane访问时她会去:
她被透明地重定向到default.aspx,它会输入她的名字(来自上面的url)并对照数据库进行检查。看到她之前访问过并创建了一个帐户,她被透明地重定向到login.aspx,要求她输入她上次创建的身份验证凭据。
答案 0 :(得分:1)
首先,您需要重写对Default.aspx的请求。根据您的IIS版本(以下是IIS 7.5),这很简单。在web.config中,规则(在system.webServer部分中)类似于
<rewrite>
<rules>
<rule name="test" enabled="true" stopProcessing="false">
<match url="^([a-zA-Z]*)$" />
<action type="Rewrite" url="Default.aspx?u={R:1}" />
</rule>
</rules>
</rewrite>
(或者您可以使用IIS管理器)。当然,正则表达式[a-zA-Z]应该适合您的业务规则 - 您可能希望允许数字。
重写IIS中的请求 - 在浏览器中看不到任何内容。现在你想“透明地重定向”它,这意味着浏览器中的URL应该根据用户是否已经存在而改变。
要实现这一点,在后面的Default.aspx代码中处理Request.QueryString [“u”],请按照
进行操作Response.Redirect("Welcome.aspx") or
Response.Redirect("Login.aspx")
取决于数据库查询结果。如果您不想更改浏览器URL,请使用Server.Transfer而不是Response.Redirect。