2011-02-10 4 views
0

У меня есть веб-форма C# .net, которая делает простой ответ.write в формате контента JSON. Он отлично работает с каждым клиентом, с которым я его тестирую, включая вызов TinyWebDB API с телефона Android. Но не беспокойтесь об этом API для этого вопроса.C# .net System.Net.WebClient .. Серверная сторона или нет?

Я добавил код сервера для этой веб-формы, чтобы читать и очищать веб-страницу следующим образом.

System.Net.WebClient myWebClient = new System.Net.WebClient(); 
Stream myStream = myWebClient.OpenRead(what); 
StreamReader sr = new StreamReader(myStream); 
string s = sr.ReadToEnd(); 

У меня создается впечатление, что код - это все серверная сторона !?

Я протестировал страницу из IE, FF и Chrome .. все работает отлично. Однако, если я попытаюсь вызвать страницу веб-формы из TinyWebDB, вызов отлично работает, и я верну данные, но я получаю ошибку 404 на стороне сервера, прочитанной на веб-странице?

Это почти как если System.Net.WebClient требует что-то или что-то делает на самом клиенте. Я думал, что чтение страницы происходит на серверах и за кулисами на моем экране. Почему мой серверный код заботится о том, какой браузер или API инициировал вызов веб-формы?

Должен ли я использовать другой класс?

Большое спасибо.

+3

Невозможно, чтобы он «делал что-то» на клиенте: код находится на сервере. Вы ошибаетесь, и проблема в другом - –

+0

Дополнительная информация необходима. Есть ли что-то, возможно, строковая переменная запроса или веб-метод, который определяет, вызван ли этот код или нет? Поскольку он работает на стороне сервера, только детали реализации, подобные этим, могут вызывать различное поведение, если сервер тот же, но клиент отличается. – Kris

+0

Я тоже так думаю. Я изолировал все и завернул вышеприведенный код в try/catch, возвращая его результаты в API. От всех клиентов я вижу, что вывод со страницы читает запрос на интерфейс tinyWebDB API. Это возвращает информацию. Удаленный сервер ответил на ошибку: (404) Не найдено. Я также вижу, что он пытался обработать, и он соответствует всем другим клиентам. – o365spo

ответ

0

Это код сервера.

Где находится переменная «что»? Является ли форма TinyWebDB-клиента изменением входных значений формы?

Возможно ли, что сайт, на который вы запрашиваете, отклоняет ваш запрос, потому что вы нажимаете его слишком быстро, и вам просто не повезло с тем, что он был этим клиентом каждый раз?

+0

Это единственная правдоподобная вещь, о которой я тоже думал. Я добавил Sleep 3000 в конец блока, но тот же результат. На самом деле это не форма, она просто выполняет Response.Write в типе контента JSON. код работает отлично, это просто когда я звоню из этого API, я получаю 404, возвращенный в данных. – o365spo

+0

Я вижу API, который забирает полные 3 секунды, чтобы вернуться, а затем 404 сообщается вместе с другими фиксированными данными, которые отправляет моя страница, поэтому я могу ясно видеть, что приведенный выше код не подключается, но только из моего вызова API. Точная точная страница, проверенная браузерами, дает хорошие результаты. Умение ошеломляет. – o365spo

+0

Это ODD, но через мой API TinyWebDB я отправляю строку запроса, которую я пытаюсь очистить с помощью webclient, как уже упоминалось. Когда я смотрю на текст строки запроса, он выглядит нормально, но когда я выполняю над ним длину, он сообщает примерно на 10 символов больше, чем я вижу. Есть ли хорошая функция для удаления всех символов без ascii? – o365spo

Смежные вопросы