我测试了我在实时网站上实施的搜索功能。我遇到了一些小问题。我不能在搜索框中放入特殊字符,否则我的应用程序将崩溃。 我尝试使用它崩溃的角色的一些替换来解决这个问题,但这不能解决痛苦。 当我输入此标志时:*进入搜索框,它给了我以下错误:
无法解析'< %%> echo; ':''或'?'不允许作为WildcardQuery中的第一个字符。我之前遇到过这个错误,然后剥离了所有单词之间的空格。然后错误消失了。但是,当我现在替换它:*用这个:“”我将得到上述错误。 有什么标准方法可以解决特殊字符问题吗? 我会在这里写下我的一些代码,这样我就可以得到更好的反馈。
Analyzer analyzer = new StandardAnalyzer();
QueryParser qpContent = new QueryParser(Index.ContentFieldName, analyzer);
keyword.Trim();
keyword = keyword.Replace("\"", "");
keyword = keyword.Replace("^", "");
keyword = keyword.Replace("*", "");
Query queryContent = qpContent.Parse(keyword + "*");
QueryParser qpLanguage = new QueryParser("language", analyzer);
Query queryLanguage = qpLanguage.Parse(Sitecore.Context.Language.Name.ToString());
如您所见,我首先替换*,然后再将其添加回查询工具中。我不是100%熟悉这种功能,因此根本不知道我做错了什么。非常感谢所有帮助,谢谢!
答案 0 :(得分:1)
您可能在配置中设置了ValidateRequest选项,这有助于防止asp.net中的注入攻击。
有些细节可以在这里找到......
http://msdn.microsoft.com/en-us/library/bb355989.aspx
http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.validaterequest.aspx
和...