Silverlight, развертывание, порты, междоменные политики и конечные точки - PullRequest
0 голосов
/ 23 августа 2009

Я сделал простое приложение Silverlight с веб-сервисом, вызывающим базу данных, и заставил его работать на моем компьютере для разработки.

Когда я опубликовал проект веб-службы в IIS на том же компьютере и получил доступ к приложению Silverlight из IIS, используя http://localhost/SilverlightTest/,, я мог видеть Silverlight на странице, но вызов веб-службы не был рабочий.

Поэтому я добавил файл clientaccesspolicy.xml в нескольких местах. Во всех инструкциях написано, чтобы поместить его в корневой каталог, поэтому я попытался:

c: \ inetpub / wwwroot \ Не работает

c: \ webs \ SilverlightTest \ Это папка, в которую я опубликовал проект веб-службы, включая файл xap. Но не сработало

c: \ webs \ Просто предположение, но это не сработало.

Затем в VS я добавил файл в проект веб-службы, и он добавил его в папку, где хранится проект веб-службы c: \ work \ Silverlight \ TestWCF \ TestWCF.Web \. Когда я открыл страницу в Firefox из IIS, вызов веб-службы теперь работал. По-видимому, приложение Silverlight вызывает веб-службу в моей папке для разработки, а не службу в виртуальном каталоге IIS c: \ webs \ SilverlightTest \ (он не работал, когда я открывал страницу с другого компьютера в рабочая группа) /

Почему приложение Silverlight вызывает веб-службу в папке для разработки? Разве веб-сервис не должен находиться в виртуальном каталоге, в котором он был опубликован? Как я могу устранить путаницу?

Вот конфигурация в моем файле ServiceReferences.ClientConfig

 <client>
        <endpoint address="http://dellnov2006:2753/SimpleWCF.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_ISimpleWCF" contract="SimpleWCF.ISimpleWCF"
            name="BasicHttpBinding_ISimpleWCF" />

Будем весьма благодарны за любую помощь, объяснения или ссылки на соответствующие статьи. Мы будем благодарны за статью, объясняющую, как приложения Silverlight называют веб-сервисы.

Спасибо

Майк Томас

Ответы [ 4 ]

1 голос
/ 24 августа 2009

В вашем конфигурационном файле адрес конечной точки равен http://dellnov2006:2753/SimpleWCF.svc Похоже, вы пытаетесь подключиться к этому адресу.

Перед публикацией приложения вы должны изменить этот адрес на http://localhost/Service/SimpleWCF.svc или что-то, что точно указывает на вашу услугу.

clientaccesspolicy.xml должен находиться в ** c: \ inetpub \ wwwroot ** Но этот файл нужен вам только в том случае, если вы получите доступ к службе с другого хоста, с которого он был загружен. Я не думаю, что вам это нужно в вашем случае, если вы хотите использовать localhost на локальном iis.

0 голосов
/ 03 сентября 2009

Поздно к вечеринке, но я добавлю, что если ваш обязательный адрес включает порт #, то вы все еще используете веб-сервер Visual Studio. http://dellnov2006:2753 - это дешевая распродажа, которую вы все еще используете веб-сервер VS, а не IIS, как вы предполагали.

0 голосов
/ 24 августа 2009

Большое спасибо djjoyro. Ты был прав. Изменение файла конфигурации на:

адрес конечной точки = "http://MachineName/SilverlightTest/SimpleWCF.svc" binding =" basicHttpBinding " bindingConfiguration = "BasicHttpBinding_ISimpleWCF" contract = "SimpleWCF.ISimpleWCF" name = "BasicHttpBinding_ISimpleWCF"

сработало и без файла политики клиентского доступа. Это также работало, когда я обращался к приложению Silverlight с других компьютеров в рабочей группе.

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

Мне нужно знать намного больше об этом, но, по крайней мере, развертывание теперь работает после нескольких дней борьбы.

Майк Томас

0 голосов
/ 24 августа 2009

Адрес в ClientConfig - это адрес службы, против которой вы добавили «Справочник по услугам» Как вы заметили, это не относительный путь. Чтобы переопределить это поведение, укажите URI адреса в конструкторе клиента службы.

Кроме того, вам действительно нужен Fiddler. Тебе это понравится. Помогает как в этих проблемах, так и в междоменных проблемах.

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