C# 如何维护用户输入的URL

C# 如何维护用户输入的URL,c#,asp.net,iis-7.5,C#,Asp.net,Iis 7.5,我的iis文件夹结构如下 Default Web Site---->online and Accessing with www.sitename.com/online Default Web Site---->trade and Accessing with www.sitename.com/trade Default Web Site---->private and Accessing with www.sitename.com/private 在这里,登录页面位于“默

我的iis文件夹结构如下

Default Web Site---->online and Accessing with www.sitename.com/online

Default Web Site---->trade and Accessing with www.sitename.com/trade

Default Web Site---->private and Accessing with www.sitename.com/private
在这里,登录页面位于“默认网站-->trade/login.aspx”内。当用户输入 www.sitename.com/online或www.sitename.com/private或www.sitename.com/trade他/她将重定向到url www.sitename.com/trade/Login.aspx

因此,我需要的是,当用户输入“www.sitename.com/online”时,他/她应该保持与www.sitename.com/online相同的URL,而不是“www.sitename.com/trade/Login.aspx”。因此,我如何维护用户输入的URL

谢谢,
Joby

最好的方法是在重定向到登录页面中传递一个参数w/原始url,然后让登录将您重定向回原始url

Location: http://example.com/login?ref=http%3A%2F%2Fexample.com%2Ffoo

然后在登录后,读取“ref”参数并执行位置重定向返回。

考虑使用MVC或至少将其路由部分与ASPX页面一起呈现视图。通过这种方式,您可以拥有任何与物理文件名无关的URL


用户很少输入任何URL。。。我也不确定是否有人在乎Url是否有意义(或者完全没有意义)。所以,我认为以类似/login的方式呈现登录页面是完全可以的,然后重定向回原始页面。如果登录从未离开您的站点,您可以将原始url保存在查询字符串中(如@chovy所建议的)或页面上的隐藏元素中。如果登录名离开了您的站点(即用于OAuth身份验证),则可以将会话状态或cookie放置在存储返回Url的位置。

如果您使用的是内置的成员资格提供程序,则可以使用具有将用户重定向到原始页面功能的
[Authorize]
属性,用户获得身份验证后,系统将自动将用户重定向到请求的页面

或者您可以尝试以下解决方案:

大概是这样的:

www.sitename.com/trade/Login.aspx?ReturnUrl=http%3A%2F%2Fsitemap.com%2Fonline
用户获得身份验证后,您可以将用户重定向到请求的页面

Response.Redirect(Request.QueryString["ReturnUrl"]);

+1假设问题是“登录后如何返回原始页面”,而不是在键入“www.sitename.com/online”时“从不在Url中显示…/login.aspx”。重定向发生在www.sitename.com/trade/login.aspx。这里的问题是Url中显示了交易文件夹。因此他们不允许这样做。相反,他们希望链接应该是“www.sitename.com/online”。根本没有URL更改。@JobyKurian,所以使用MVC的路由也不适合您?根据状态,返回正常页面或登录页面应该相对容易…当他们键入“www.sitename.com/online”时,重定向发生在www.sitename.com/trade/login.aspx。这里的问题是URL中显示了交易文件夹。因此他们不允许这样做。相反,他们希望链接应该是“www.sitename.com/online”。根本没有URL更改。这里的问题不是重定向。问题是,我应该将URL保持为静态。(www.sitename.com/online)而不是(www.sitename.com/trade/Login.aspx),即使在重定向之后也是如此。这里的问题不是重定向。问题是,我应该将URL保持为静态。(www.sitename.com/online)而不是(www.sitename.com/trade/Login.aspx)即使在重定向之后。