需要ASP.Net或IIS请求URL损坏的建议吗

需要ASP.Net或IIS请求URL损坏的建议吗,asp.net,iis-7,webforms-routing,Asp.net,Iis 7,Webforms Routing,环境: 服务器2008 IIS 7,集成模式 .Net 4 ASP.NET WebForms路由(与MVC路由使用相同的.dll,但我不确定是哪个版本) 无Cookieless会话(会话ID在用户的URL上传播) 我们有一个应用程序,它使用路由来识别用户与哪个组织关联。URL将采用域/组织/组织子类别的形式。用户跟随他们的自定义URL并看到一个登录页。当他们点击next时,他们会被引导到一个收集一些人口统计信息的页面,然后点击next进入应用程序。当他们这样做时,用户将被添加(如果需要)到我

环境:

  • 服务器2008
  • IIS 7,集成模式
  • .Net 4
  • ASP.NET WebForms路由(与MVC路由使用相同的.dll,但我不确定是哪个版本)
  • 无Cookieless会话(会话ID在用户的URL上传播)
我们有一个应用程序,它使用路由来识别用户与哪个组织关联。URL将采用域/组织/组织子类别的形式。用户跟随他们的自定义URL并看到一个登录页。当他们点击next时,他们会被引导到一个收集一些人口统计信息的页面,然后点击next进入应用程序。当他们这样做时,用户将被添加(如果需要)到我们数据库中的组织中。在初始登录页之后,路由不再适用-用户被定向到常规的aspx页面

该网站正在接收大量进入该应用程序的用户;平均每天850人

问题是,有一小部分(不到1%)的用户加入了错误的组织

我们正在登录页面上记录信息,以及他们何时提交人口统计页面。我们记录的一件事是Request.RawUrl。我们开始注意到,与一个组织相关联的用户被记录为请求了另一个组织的完整正确URL(包括子类别)。有时,即使在同一天,也没有人合法地跟随错误的组织URL进来。我们已经有人直接报告说,他们刚刚创建了“子类别”(使用管理应用程序),指示用户遵循其唯一的URL,但是日志显示了该用户完全不同的URL(我知道是那个用户,因为我正在记录电子邮件地址和会话ID,这样我就可以通过登录页和人口统计页关联同一用户的路径)。这就好像IIS有时正在创建一个新会话,并简单地将一些以前请求的URL分配给那个用户

为了消除某种缓存,我们有:

  • 将config httpRuntime元素的enableKernelOutputCache属性设置为false
  • 在IIS设置中禁用缓存
  • 将config sessionState元素的regenerateExpiredSessionId属性设置为false(即使我们还没有看到会话ID被重用)

其他建议?

这些是内部用户吗?是否存在代理注意事项?这并不能解释错误的url。您是否100%确定用户获得了url a,并显示了url b?您当前是否分配了任何路由模块?您确定它不会被其他模块中的规则重写


这可能是他们的“新用户”电子邮件(例如)包含错误url的应用程序问题吗?

嗯,我们仍然不能完全肯定地知道,但似乎一个组织中的用户最有可能在互联网上搜索系统中的url并遵循这些url。
我无法解释我在原始帖子中描述的报告。

当我试图增强日志记录以捕获会话前后的创建来证明这一点时,begin request事件的日志记录在我们的QA环境中起作用(与生产环境相同),但在生产中,仅仅使用flat是不起作用的。我无法确定原因。

据我所知,你的问题太长了,至少对我来说是这样。没有内部用户。代理注意事项:没有两个组织会共享同一个代理。至于我们是否确定用户提交的URL与他们指定的URL不同到:几乎100%。在我引用的一个例子之前,我们根本不相信这一点:管理员将用户指向刚刚创建的URL,而用户的Request.RawUrl完全不同(他们正确构建错误URL的可能性为零)。没有路由模块。有些URL是在电子邮件/报告中发送的,但这些似乎不是问题。应用程序中是否启用了输出缓存?如果我没有记错的话,原始URL并不总是他们请求的URL。我们最近在这里发布了一篇关于此的帖子。我必须检查此输出缓存是否只控制接收到的内容,而不是我选择的URL是否与哪个用户匹配,对吗?我在MVC中读到(没有体验到)outputcaching非常意外的结果,尤其是在处理auth时,所以如果可能的话,我只想将其排除在考虑之外。