asp.net – MVC Child Action在Path中抛出非法字符
当我的视图包含子动作时,当我的url包含引号字符时,我收到一个意外的异常.
http://mysite.info/home/index/” 当此操作的视图不包含子操作时,一切正常.如果它确实包含子操作(例如@ Html.Action(“Menu”)),则在调用Html.Action时会出现异常“System.ArgumentException:path in Illegal characters”. 查看this post双引号字符不是默认的无效字符之一.在我看来,有或没有儿童行为的行为应该表现相同.双引号是有效还是不有效. 另外,我不确定如何最好地解决这个看似双重标准的问题.我犹豫是否要更改非法字符列表以包含“(默认值是默认值的原因).子操作非常有用所以我不想不使用它们.试着抓住每个孩子的动作是hacky . 我并没有积极尝试在我的路线中使用引号,但如果“不在非法字符列表中那么它不应该导致异常,对吧? 例 控制器: public class HomeController : Controller { public ActionResult WithChildAction() // throws exception with quote in path { return View(); } public ActionResult WithoutChildAction() // works with quote in path { return View(); } public ActionResult ChildAction() { return View(); } } WithChildAction.cshtml: <h2>With Child Action</h2> @Html.Action("ChildAction") WithoutChildAction.cshtml: <h2>Without Child Action</h2> ChildAction.cshtml: <h2>Child Action</h2> 堆栈跟踪 [ArgumentException: Illegal characters in path.] System.IO.Path.CheckInvalidPathChars(String path,Boolean checkAdditional) +11113918 System.Security.Permissions.FileIOPermission.CheckIllegalCharacters(String[] str) +30 System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access,AccessControlActions control,String[] pathListOrig,Boolean checkForDuplicates,Boolean needFullPath,Boolean copyPathList) +97 System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access,String path) +63 System.Web.InternalSecurityPermissions.PathDiscovery(String path) +29 System.Web.HttpRequest.MapPath(VirtualPath virtualPath,VirtualPath baseVirtualDir,Boolean allowCrossAppMapping) +149 System.Web.HttpRequest.MapPath(VirtualPath virtualPath) +33 System.Web.HttpServerUtility.Execute(IHttpHandler handler,TextWriter writer,Boolean preserveForm,Boolean setPreviousPage) +44 System.Web.HttpServerUtility.Execute(IHttpHandler handler,Boolean preserveForm) +28 System.Web.HttpServerUtilityWrapper.Execute(IHttpHandler handler,Boolean preserveForm) +19 System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper,String actionName,String controllerName,RouteValueDictionary routeValues,TextWriter textWriter) +461 System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper,RouteValueDictionary routeValues) +83 System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper,Object routeValues) +29 ASP._Page_Areas_Site_Views_Content_File_cshtml.Execute() in c:inetpubWebsitesMyWebsiteSourceAreasSiteViewsContentFile.cshtml:22 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +199 System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +104 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,WebPageRenderingBase startPage) +78 System.Web.Mvc.RazorView.RenderView(ViewContext viewContext,Object instance) +235 System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext,TextWriter writer) +107 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +291 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext,ActionResult actionResult) +13 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters,Int32 filterIndex,ResultExecutingContext preContext,ControllerContext controllerContext,ActionResult actionResult) +56 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters,ActionResult actionResult) +420 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext,IList`1 filters,ActionResult actionResult) +52 System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173 System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100 System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult,ExecuteCoreState innerState) +13 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39 System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult,Controller controller) +12 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +28 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult,ProcessRequestState innerState) +21 System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36 System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +31 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9690164 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously) +155 解决方法
通过在web.config中设置以下内容找到一个可能的解决方案:
<httpRuntime relaxedUrlToFileSystemMapping="true"/> 这似乎很危险,所以我只是忽略错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 在Umbraco 7中建立联系表格
- C# 快速高效率复制对象另一种方式 表达式树
- asp.net – 使用Model-View-Presenter模式重定向页面的最正
- asp.net-mvc – 如何清除使用MVC HTML帮助程序定义的文本框
- ASP.NET动态创建控件和回发
- asp.net – 诸如Eval(),XPath()和Bind()的数据绑定方法只能
- asp.net-mvc – 如何持久保存用户选择(例如:主题选择)
- asp.net-core – 如何在aspnet核心应用程序中为静态文件使用
- 文本框导致ASP.NET C#SQL出现问题
- asp.net – 如何在Visual Studio 2010中设置Umbraco cms?
- asp.net – 可以通过从web.config中删除条目来关
- asp.net-mvc – 如何单元测试MSTest中的JsonResu
- T-SQL Enhancement in SQL Server 2005[下篇]
- asp.net – 我想要一个Master UserControl(一个M
- asp.net-mvc – 从非控制器类添加到TempData
- ILifetimeScope的autofac DependencyResolutionE
- 新版本 swagger 组件中 Servers 的 坑
- asp.net-mvc – 使用IIS7.5将网站中的URL绑定到另
- asp.net – 无法识别的配置部分
- asp.net-mvc – 当MVC路由触发时,在控制器中获取