代码之家  ›  专栏  ›  技术社区  ›  DaveDev

如何将引号字符作为路由参数?获取“路径中的非法字符”消息

  •  1
  • DaveDev  · 技术社区  · 15 年前

    我有一个搜索框存在于所有页面上。用户可以输入文本,然后单击“搜索”,结果显示在搜索页面上。

    http://localhost:2010/search/my%20search%20term
    

    这很管用。但如果我在字符串周围加引号,

    http://localhost:2010/search/%22my%20search%20term%22
    

    具有以下堆栈跟踪:

    [ArgumentException: Illegal characters in path.]
       System.IO.Path.CheckInvalidPathChars(String path) +7493413
       System.IO.Path.Combine(String path1, String path2) +40
       System.Web.Configuration.UserMapPath.GetPhysicalPathForPath(String path, VirtualDirectoryMapping mapping) +114
       System.Web.Configuration.UserMapPath.GetPathConfigFilename(String siteID, VirtualPath path, String& directory, String& baseName) +72
       System.Web.Configuration.UserMapPath.MapPath(String siteID, VirtualPath path) +30
       System.Web.Configuration.UserMapPath.MapPath(String siteID, String path) +31
       System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath virtualPath, Boolean permitNull) +297
       System.Web.Hosting.HostingEnvironment.MapPathInternal(VirtualPath virtualPath, Boolean permitNull) +51
       System.Web.CachedPathData.GetConfigPathData(String configPath) +341
       System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp) +110
       System.Web.HttpContext.GetFilePathData() +36
       System.Web.HttpContext.GetConfigurationPathData() +26
       System.Web.Configuration.RuntimeConfig.GetConfig(HttpContext context) +43
       System.Web.Configuration.CustomErrorsSection.GetSettings(HttpContext context, Boolean canThrow) +41
       System.Web.HttpResponse.ReportRuntimeError(Exception e, Boolean canThrow, Boolean localExecute) +101
       System.Web.HttpRuntime.FinishRequest(HttpWorkerRequest wr, HttpContext context, Exception e) +383
    

    我不知道这里怎么了。。我需要以某种方式对输入进行编码吗?我需要在路由中指定不同的内容吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Darin Dimitrov    15 年前

    这是一个 blog post 从斯科特·汉斯曼那应该能给你一些好的指导。