Настройка моей функции поиска - PullRequest
3 голосов
/ 25 января 2010

Я проверил функциональность поиска, которую я реализовал на живом веб-сайте. Я столкнулся с некоторыми небольшими проблемами. Я не могу поместить специальные символы в поле поиска, иначе мое приложение упадет. Я пытался решить эту проблему, используя некоторые замены для персонажей, на которых он падает, но это не излечит боль. Когда я ввел этот знак: * в поле поиска, он дал мне следующую ошибку:

Невозможно разобрать '<%%> 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% знаком с такой функциональностью и, следовательно, понятия не имею, что я делаю неправильно. Вся помощь очень ценится, спасибо!

1 Ответ

1 голос
/ 25 января 2010

у вас может быть установлен параметр 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

и ...

http://en.wikipedia.org/wiki/Code_injection

http://en.wikipedia.org/wiki/SQL_injection

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...