我完全失去了为什么我会收到此错误。这个错误的典型原因与尝试将HTML标记提交到文本字符串或类似的东西有关,但我没有做那样的事情。我认为发生这种情况的页面需要一个简单的电子邮件地址。
这是我的模型验证......
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; }
}
这是我的脚本引用,因为错误似乎在Scripts目录中......
<script src="@Url.Content("~/Scripts/jquery-1.5.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
我最好的猜测是有人恶意在电子邮件地址中输入了一些无效的脚本,但我没有看到Elmah或CodeSmith Insight中任何指向我的任何代码的错误。我甚至无法弄清楚到底发生了什么。
以下是错误......
从客户端(:)检测到潜在危险的Request.Path值。 (/NewsList/Scripts/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a }),i.html(G)
System.Web.HttpException(0x80004005):从客户端(:)检测到潜在危险的Request.Path值。 在System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 在System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 在System.Web.HttpApplication + PipelineStepManager.ValidateHelper(HttpContext context)
路径中的非法字符。
System.ArgumentException:路径中的非法字符。 在System.IO.Path.CheckInvalidPathChars(String path) 在System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String [] str) at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access,AccessControlActions control,String [] pathListOrig,Boolean checkForDuplicates,Boolean needFullPath,Boolean copyPathList) 在System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess访问,字符串路径) 在System.Web.InternalSecurityPermissions.PathDiscovery(String path) 在System.Web.HttpRequest.get_PhysicalPath() 在WebsitePanel.IIsModules.SecureFolders.context_OnEnter(Object sender,EventArgs e) 在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)
at System.IO.Path.CheckInvalidPathChars(String path) 在System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String [] str) at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access,AccessControlActions control,String [] pathListOrig,Boolean checkForDuplicates,Boolean needFullPath,Boolean copyPathList) 在System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess访问,字符串路径) 在System.Web.InternalSecurityPermissions.PathDiscovery(String path) 在System.Web.HttpRequest.get_PhysicalPath() 在WebsitePanel.IIsModules.SecureFolders.context_OnEnter(Object sender,EventArgs e) 在System.Web.HttpApplication + SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)
更新 - 可能已解决 在更多地讨论我的大脑之后,我在堆栈跟踪中看到了“WebsitePanel.IIsModules.SecureFolders”,这激起了我的记忆。我记得在托管服务提供商处看到有关安全文件夹的内容此功能隐藏在其控制面板中,这将基于该方法有意义。我给他们发了电子邮件,要求他们禁用该模块。它没有发生几天,所以我怀疑是这样。
答案 0 :(得分:1)
正如Exception所说,请求路径中存在非法字符,更具体地说冒号字符不正常(:) =“从客户端(:)检测到潜在危险的Request.Path值。”
您的请求似乎包含:
“(/新闻列表/脚本/,数据:C,完成:功能(A,B,C){C = a.responseText,a.isResolved()&安培;及(a.done(函数(a)中{C = A}),i.html(G“
从客户端(:)检测到潜在危险的Request.Path值。 (/NewsList/Scripts/,data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a }),i.html(G)
System.Web.HttpException(0x80004005):从客户端(:)检测到潜在危险的Request.Path值。 System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)中的System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
System.Web.HttpApplication + PipelineStepManager.ValidateHelper(HttpContext context)中的System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
路径中的非法字符。
答案 1 :(得分:0)
在客户端提交之前,您似乎没有验证电子邮件地址。您可以使用以下代码验证电子邮件地址。同时为电子邮件输入字段设置maxlength
属性。
function validateEmail(email)
{
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return email.match(re)
}
if(!validateEmail($("#emailAddress).val()){
alert("Invalid email address");
}
答案 2 :(得分:0)
ASP.NET MVC已经具有DataType属性。您可以使用此代替正则表达式
public class Subscriber
{
[Key]
[DisplayName("Email Address")]
[Required(ErrorMessage = "{0} is required")]
[DataType(DataType.EmailAddress)]
public string EmailAddress { get; set; }
public Guid UnsubscribeKey { get; set; }
}