使用标准asp.net3.5和web.config将url重定向到index.aspx页面

时间:2012-05-01 13:15:11

标签: c# asp.net url-rewriting

我有一个http://trade.businessbazaar.in的子域名。我正在以这种方式动态创建来自数据库的URL http://trade.businessbazaar.in/mycompany。为了显示细节,我在那里有一个index.aspx文件,认为在每个请求中,index.aspx页面都会加载并显示数据。此外,index.aspx页面上有一个母版页,我从中捕获文本mycompany并在数据库中查询它以获取结果。但似乎没有任何效果。

真正的链接是http://trade.businessbazaar.in/Symparlife。但它无法加载index.aspx。我需要一个没有任何第三方dll或重写器的干净方法。直接在配置中推送一些行并开始工作。这是url将是相同的,但索引页将被加载...

简而言之,我想说

我需要StackOverflow类型的清理url机制来获取页面

先谢谢

1 个答案:

答案 0 :(得分:1)

您可以处理Global.asax中的Begin_Request事件,并添加自定义代码以重定向到index.aspx,并将URL的各个部分转换为查询字符串参数。您应该使用Server.Transfer将URL保留在浏览器中。

我建议升级到4.0并使用Routing enine。您应该检查标准路由是否可用作ASP.NET 3.5的下载。我相信你的代码会很快变得混乱。去过那里,完成了。

正如@Mike Miller在评论中提到的,路由引擎附带ASP.NET 3.5。您可以在此处查看文档 - http://msdn.microsoft.com/en-us/library/system.web.routing(v=vs.90).aspx

以下是有关如何将其与Web窗体一起使用的教程 - http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx

对于您的情况,代码类似于:

routes.MapPageRoute("company-index", "/{company}", "~/index.aspx")

在index.aspx中,您可以像这样访问公司的路线值:

string company = (string)Page.RouteData.Values["company"];

请记住,您最好在实际参数(公司名称)之前在URL中添加内容。如果不这样做,您将在以后遇到问题,因为您可能想要添加“/ Login”之类的URL,但是您必须验证用户无法创建名为“Login”的公司。不是Stack Overflow在URL中的实际问题信息之前有“/ questions /”。