У меня есть запросы, против которых я работаю solr индекс, которые иногда имеют очень длинные параметры запроса, я получаю ошибки, когда я выполняю эти запросы, которые я принимаю, делают к пределу ПОЛУЧИТЬ параметры запроса.
Вот метод, который я использую для запросов (JSON), это должно показать, что я использую Расширения Http (клиент, который я использую, тонкая обертка для HttpClient), не вплотную решение. 90% запросов хорошо работают, это - как раз в то самое время, когда параметрические усилители являются большими, я получаю 500 ошибок от solr. Я читал где-нибудь, Вы можете использовать Сообщение при выполнении избранной команды, но не нашли примеры того, как сделать это. Любая справка была бы фантастической!
public string GetJson(HttpQueryString qs)
{
using (var client = new DAC.US.Web.XmlHttpServiceClient(this.Uri))
{
client.Client.DefaultHeaders.Authorization = new Microsoft.Http.Headers.Credential("Basic", DAC.US.Encryption.Hash.WebServiceCredintials);
qs.Add("wt", "json");
if (!String.IsNullOrEmpty(this.Version))
qs.Add("version", this.Version);
using (var response = client.Get(new Uri(@"select/", UriKind.Relative), qs))
{
return response.Content.ReadAsString();
}
}
}
/ select принимает запросы POST без проблем. Вы можете попробовать это с помощью curl:
curl -d "q = *: * & rows = 1" http: // localhost: 8983 / solr / select
Я не могу комментировать XmlHttpServiceClient, поскольку это какой-то частный код, но см. на этой странице пример POSTing с использованием HttpWebRequest.
Кстати: существуют библиотеки .net, которые реализуют взаимодействие с Solr, не нужно кататься самостоятельно, если у вас нет очень странных требований.