我完全丧失了为何出现此错误的原因。这个错误的典型原因与尝试将HTML标记提交到文本字符串或类似的东西有关,但我没有这样做。我认为这发生的页面需要一个简单的电子邮件地址。从客户端检测到潜在危险的Request.Path值
这里是我的模型验证...
public class Subscriber
{
[Key]
[DisplayName("Email Address")]
[Required(ErrorMessage = "{0} is required")]
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$", ErrorMessage = "{0} must be a valid email address")]
public string EmailAddress { get; set; }
public Guid UnsubscribeKey { get; set; }
}
这里是我的脚本引用,因为这个错误似乎是在脚本目录...
我最好的猜测是,有人正在恶意地向电子邮件地址输入一些无效的脚本,但我在Elmah或CodeSmith Insight中看不到任何指向我的任何代码的错误。我甚至无法弄清楚究竟发生了什么。
而且这里的错误...从客户端检测到
有潜在危险的Request的值(:)。 (/ NewsList/Scripts /,data:c,complete:function(a,b,c){c = a.responseText,a.isResolved()& &(a.done(function(a){c = a}) ,i.html(克)
System.Web.HttpException(0X80004005):从客户端(:) 在System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 检测到潜在危险的Request的值在System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext的上下文)
在System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 在System.Web.HttpApplication + PipelineStepManager.ValidateHelper(HttpContext的上下文)
路径中的非法字符。
System.ArgumentException:路径中的非法字符。 在System.IO.Path.CheckInvalidPathChars(字符串路径) 在System.Security.Permissions.FileIOPermission.HasIllegalCharacters(字符串[] STR) 在System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess访问,AccessControlActions控制,字符串[ ]在System.Web.Policy.Permissions.FileIOPermission.ctor(FileIOPermissionAccess访问,字符串路径) at System.Web.InternalSecurityPermissions.PathDiscovery(String path) 在System.Web。 HttpRequest.get_PhysicalPath() 在WebsitePanel.IIsModules.SecureFolders.context_OnEnter(对象发件人,EventArgs的) 在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep。在System.Web.HttpApplication.ExecuteStep执行() (IExecutionStep步骤,布尔& completedSynchronously)
在System.IO.Path.CheckInvalidPathChars(字符串路径) 在System.Security.Permissions.FileIOPermission.HasIllegalCharacters(字符串[ (FileIOPermissionAccess访问,AccessControlActions控件,String [] pathListOrig,布尔checkForDuplicates,布尔needFullPath,布尔copyPathList) 在System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess访问,String path) at System.Web。InternalSecurityPermissions.PathDiscovery(字符串路径) 在System.Web.HttpRequest.get_PhysicalPath() 在WebsitePanel.IIsModules.SecureFolders.context_OnEnter(对象发件人,EventArgs的) 在System.Web.HttpApplication + SyncEventExecutionStep.System.Web.HttpApplication。 IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep一步,布尔& completedSynchronously)
UPDATE - 可能分辨 货架我的大脑更多关于这个我看到了 “WebsitePanel.IIsModules.SecureFolders” 在后堆栈跟踪和震惊我的记忆。我记得看到有关我的托管服务提供商上的安全文件夹这个功能被埋在他们的控制面板里,这个方法是有意义的。我发邮件给他们,要求他们禁用该模块。几天没有发生,所以我怀疑是这样。
用于验证电子邮件的正则表达式不正确。只提到一个缺陷,它不会在电子邮件地址的第一部分接受'+'。 – icktoofay
@icktoofay你有没有一个例子可能是一个无效的电子邮件地址,但我目前的逻辑会说是有效的? – oliwa
我实际上是在说它拒绝了有效的电子邮件地址(例如'example + test @ gmail.com'),但是你的正则表达式接受'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @ a.com',但它是一个无效的电子邮件地址。那里的特定问题(本地部分超过64个字符)很容易在正则表达式中修复,但推荐的选择是使用遵循RFC的电子邮件解析器,而不是使用正则表达式,因为这不是唯一的问题。 – icktoofay