【发布时间】:2009-03-05 09:19:59
【问题描述】:
在 ASP.NET MVC 的几个早期预览版中,控制器方法的参数将通过检查查询字符串、表单、cookie 和服务器变量集合来解析,如 this post from Stephen Walther 中所述。
例如,这段代码曾经可以工作:
public class MyController : Controller {
// This should bind to Request.Cookies["userId"].Value
public ActionResult Welcome(int userId) {
WebUser wu = WebUser.Load(userId);
ViewData["greeting"] = "Welcome, " + wu.Name;
return(View());
}
}
但现在针对发布候选运行,它会引发异常,因为它找不到 userId 的值,即使 userId 肯定出现在请求 cookie 中。
发行说明中是否包含此更改?如果这是对框架的更改,现在是否有推荐的替代方法来以这种方式绑定 cookie 和服务器变量?
编辑:感谢迄今为止做出回应的人。我可能选择了一个不好的例子来证明这一点;我们的代码将 cookie 用于各种形式的“方便”但非必要的持久性(记住搜索结果的顺序,诸如此类),因此这绝不是纯粹的身份验证问题。依赖用户 cookie 的安全隐患有据可查;我对当前有关用于检索 cookie 值的灵活、易于测试的技术的建议更感兴趣。 (我相信你会明白,上面的例子可能有安全隐患,但是非常非常容易测试!)
【问题讨论】:
-
你能发布你的路由表设置吗?
-
在 ASP.NET 中,如果您执行 'Request["blah"]',它会查看查询字符串、表单发布、cookie,我认为是服务器变量 (eek)。 如果的意图是转移到查询字符串/表单发布以获取更多“预期”数据,那么我完全赞成......虽然真的只是一个猜测:)跨度>
-
查看我的帖子,了解“用于检索 cookie 值的灵活、易于测试的技术”
标签: asp.net-mvc