2009-05-29 3 views
1

Мы установили веб-сайт ASP.NET на сервере клиента. На этом сайте есть веб-служба с несколькими веб-методами, которые вызывается объектом Flash для отображения ленты новостей. Если вы перейдете на сайт (например: www.domain.com), все работает отлично, за исключением вспышки.Проблема с неправильными URL-адресами в WSDL веб-службы .NET

Проблема в том, что когда мы переходим к .asmx, заголовок показывает, что хост является внутренним поддоменом для своей сети (internal.domain.com). Очевидно, что это не разрешает какой-либо публичный IP-адрес при просмотре из-за пределов сети. Это приводит к сбою Flash, поскольку Flash-объект встроен на страницу и, следовательно, работает на стороне клиента.

Я проверил имя компьютера на соответствующем сервере, и он даже не соответствует «internal.domain.com» - это нечто совершенно другое. Откуда он получает эту информацию. Он не поступает из IIS, поскольку у нас нет настроенных заголовков хостов, а IP для сайта настроен на (все неназначенные).

Нам либо необходимо заставить веб-службу работать с конкретным хостом, либо нам нужно что-то изменить на сервере, чтобы оно разрешило действительное имя узла с открытым доступом. Любая помощь и помощь очень приветствуются !!!!

+0

Является ли это WCF файл SVC или простой сервис ASMX? –

+0

Я на самом деле не совсем уверен, поскольку я не тот, кто сначала добавил веб-сервис в проект. В чем разница? Все, что я знаю, это то, что файл .asmx находится в папке WebServices в корне сайта, а файл codebehind (.cs) находится в каталоге App_Code. Это почти все, что нужно. – Keith

+0

Мы обнаружили, что наш клиент использовал обратный прокси для своего сетевого/сетевого трафика, поэтому заголовок хоста, который проходил, не соответствовал фактическому URL-адресу/имени хоста. Они не смогли его разрешить, поэтому нам пришлось вырезать часть вспышки, которая вызывала веб-службу. – Keith

ответ

0

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

ли глобальный поиска в исходном коде как объекта флэш и веб-службы для строки в вопросе.

Похоже, что кто-то может сконфигурировать/закодировать строку internal.domain.com в запросе объекта Flash. (Хост: это заголовок HTTP-запроса, а не заголовок ответа, IIRC.)

+0

Спасибо за ответ, однако это не проблема со вспышкой, а с самим веб-сервисом. Если вы просматриваете непосредственно файл .asmx в браузере и нажимаете на какой-либо из веб-меток, изучите заголовок SOAP, вы увидите «Host: internal.domain.com». И я сделал поиск для внутреннего.domain.com в рамках всего решения (и знал, что никаких результатов не будет возвращено, так как мы, очевидно, никогда не знали, что существует internal.domain.com). Это имя хоста должно поступать из самой машины, но где? – Keith

0

Получает ли объект Flash URL-адрес веб-службы из кода C#? Если это так, возможно, вы получите URL-адрес веб-службы по умолчанию, который вы выбираете при добавлении веб-ссылки в ваш проект в VS. Поэтому он может указывать на URL-адрес локально на машину/сервер разработчика, которая не распознается на реальном сервере.

+0

Опять же, это было разработано на наших dev-боксах, и наши dev-боксы понятия не имеют, что такое internal.domain.com, поэтому никогда не было бы шансов, что это будет дефолт. Так или иначе имя хоста на сервере нашего клиента разрешается как internal.domain.com, а не www.domain.com. Я проверил через IIS и в поле имени компьютера (мой компьютер -> свойства -> имя компьютера), и нигде нет inner.domain.com упоминается/упоминается. – Keith