我看到我的服务器上的请求似乎是由一个无关的客户端发出的,虽然我确定它们是由经过身份验证的用户制作的 - 我有fiddler日志显示客户端发送了有效的asp.net auth cookie和服务器日志表明cookie已到达且有效.所有浏览器都出现了这个问题.
数据流是:
思考?
现在详细说明:
极少数的异步请求落在我的服务器上(有证据表明它们没有被操纵或伪造)并且似乎是匿名的.在提出的7个请求中,有些数字可能有效,也可能无效(即5/7会成功,2会失败).成功/失败似乎没有任何模式.在我的请求看起来是匿名的情况下,CurrentPrincipal.Identity记录:
Thread.CurrentPrincipal.Identity.IsAuthenticated; // false
Thread.CurrentPrincipal.Identity.Name; // null (or empty, unsure off hand)
Run Code Online (Sandbox Code Playgroud)
将http.context.request.params集合转储到日志文件中,我能够看到以下相关(和擦除)属性(下面的完整参数):
context: {"userId":10000,"userName":"johnsmith"}
HTTP_COOKIE:.ASPXAUTH=[valid auth cookie value]
HTTP_X_REQUESTED_WITH:XMLHttpRequest
X-Requested-With: XMLHttpRequest
AUTH_TYPE:
AUTH_USER:
AUTH_PASSWORD:
LOGON_USER:
REMOTE_USER:
HTTP_COOKIE: .ASPXAUTH=[valid auth cookie value]
Run Code Online (Sandbox Code Playgroud)
我知道auth cookie是有效的 - 在这些相同的请求期间,我能够解密auth cookie并提取以下内容:
CookiePath: /
Expiration: 9/23/2105 8:14:22 PM
Expired: False
IsPersistent: True
IssueDate: 8/30/2010 2:54:22 PM
Name: johnsmith
UserData:
Version: 2
Run Code Online (Sandbox Code Playgroud)
不知道如何继续这一点.我们最近迁移到mvc 2.0/asp.net 4.0似乎加剧了这个问题,但我的信心并不高.
我已经联系了一些有这个问题的客户,而且这更令人沮丧(但确实反映了我在日志中能够阅读的内容).一旦进入这种状态,就很难摆脱它.清除缓存和cookie似乎没有任何效果.但是,切换到新的浏览器,一般都可以.同样地,等待几个小时并使用相同的浏览器返回它也一般都可以,但并非总是如此.如前所述,所有浏览器都可以看到这种情况.
有什么建议?
凯文
------------
以下是我捕获的日志片段的剩余部分(为pii擦除):
8/30/2010 2:54:43 PM: …Run Code Online (Sandbox Code Playgroud) 有趣的情况.我有一个Html.Textbox(),我从视图中呈现如下:
<%= Html.TextBox("title", Model.Title, new { @class = "txt" }) %>
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我对标题进行了以下有些简化的验证.为了论证,假设它找到错误,并使用modelstate错误信息重新呈现视图.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditBook(string title) {
Model = new Book(ControllerContext.RequestContext);
if (String.IsNullOrEmpty(title))
{
title = String.Empty;
ModelState.AddModelError("title", "* Title is a required");
modelState.SetModelValue("title", ValueProvider["title"]);
}
else { // show confirmation }
if (!ModelState.IsValid)
{
return View("EditBook", Model);
}
}
Run Code Online (Sandbox Code Playgroud)
当页面被重新渲染时,我的html文本框正确地附加了输入验证错误类......但它没用,因为它是第一个附加的类!我需要它覆盖我的文本框上的所有现有样式.html输出如下:
<input type="text" name="title" id="title" class="input-validation-error txt"/>
Run Code Online (Sandbox Code Playgroud)
假设已定义以下css样式:
input.txt { border: 1px; color: #000 }
.input-validation-error { border: 2px solid #fff }
Run Code Online (Sandbox Code Playgroud)
问题是,我原来的css类"txt"优先,并阻止我能够正确设置错误文本框的样式.
有什么想法吗?