C# NET中的查询字符串是否是良好的实践?

C# NET中的查询字符串是否是良好的实践?,c#,asp.net,query-string,C#,Asp.net,Query String,我正在开发一个具有数据库后端的web应用程序。过去我做过这样的事情: 查看用户123的个人资料;使用查询字符串 使用查询字符串是否被认为是一种良好的做法?我还有别的事要做吗 我使用的是C#4.0和ASP.net。如果您确定要锁定人们要查看的内容,则查询字符串非常好。。您应该检查有效值(数字、非空等),如果您的应用程序具有安全性,访问者是否有权查看用户1245的配置文件 您可以查看Session&ViewState,但QueryString似乎是您的目标。您的问题实际上不是一个.NET问题。。。这

我正在开发一个具有数据库后端的web应用程序。过去我做过这样的事情: 查看用户123的个人资料;使用查询字符串

使用查询字符串是否被认为是一种良好的做法?我还有别的事要做吗


我使用的是C#4.0和ASP.net。

如果您确定要锁定人们要查看的内容,则查询字符串非常好。。您应该检查有效值(数字、非空等),如果您的应用程序具有安全性,访问者是否有权查看用户1245的配置文件


您可以查看Session&ViewState,但QueryString似乎是您的目标。

您的问题实际上不是一个.NET问题。。。这是每个web框架和web开发人员都以某种方式处理的问题

大多数人都同意,对于网站中面向主要用户的部分,应该避免使用长的查询字符串,而应该使用对网站访问者“有意义”的url结构。尝试使用逻辑层次结构,当访问者阅读它时,他们很有可能推断出他们在站点上的位置。单击几个区域中的StackOverflow,查看他们对url的操作。你通常很清楚自己在看什么,在哪里

还有几个人向上看。。。虽然很多数据库查找都是用主键完成的,但是在url中提供一个用户友好的资源名称,而不仅仅是主键也是一个好主意。你可以看到StackOverflow在当前地址中这样做,他们使用主键“3544483”进行查找,但也包括一个SEO/用户友好的url参数“是网络良好实践中的查询字符串”。如果有人通过电子邮件向你发送该链接,你将非常清楚你将要打开什么


我不太确定WebForms是如何处理Url路由的,但是如果你很难掌握这些概念,请阅读MVC NerdDinner教程。它们涵盖了一些基本的url路由,可能会有所帮助。

如果可能的话,我认为应该避免这种做法,特别是当您以纯文本形式传递自动递增ID时。在我看来,你几乎是在戏弄用户来计算querystring值,看看他们是否可以访问其他人的个人资料。即使有适当的安全措施(在呈现页面之前在服务器端验证请求),我仍然建议在这种特殊情况下加密querystring参数

我认为使用查询字符串是很好的,但也有理由这样做,因为高级用户更容易理解查询字符串,并且对SEO更友好。例如,我碰巧认为
http://www.example.com/user/view/1234
看起来比
http://www.example.com/view.aspx?user=1234


如果您使用的是IIS 7.0,则不必更改应用程序以使用漂亮的URL。这些和一些重写规则应该足够了。

可以清楚地回答您的问题:是的,这不是一个好的做法。事实上,这是一个网站的预期行为


我完全同意ShaderOp,你应该使用一个url重写器来获得一个很好的url。事实上,我假设您将进行一些验证,以避免有人操纵url和访问他们不提供的数据。

查询字符串是可以的,但不要损害它们的安全性

如果您正在访问的配置文件是当前登录的用户,则无需发送uid。只需转到/profile并加载当前登录的用户信息

如果您正在查看其他成员配置文件,我建议只使用“用户名”、加密id或Guid


向客户端公开用户ID通常不是一个好主意。

URL重写模块看起来很棒。你以前用过吗?是的,我用过几次。它完全由微软支持,而且,除了必须知道正则表达式之外,你不用担心使用它。