2010-10-19 56 views
1

我有一个搜索框存在于所有页面上。用户可以输入文本,然后单击搜索,最后在搜索页面显示结果。如何将引号字符作为路由参数?获取“路径中的非法字符”消息

当点击搜索,包含文本框的形式,将发送到以下航线:

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 

我不知道什么是错在这里..我是否需要输入某种方式编码?我需要在路由中指定不同的东西吗?

回答

2

这是Scott Hanselman的blog post,应该给你一些好的方向。