Хостинг веб-сервисов WCF на IIS - работает в VS, но не в IIS - PullRequest
3 голосов
/ 03 февраля 2010

Я очень новичок в веб-программировании, поэтому мой вопрос об основах. Я разрабатываю приложение SilverLight и мне нужен доступ к базе данных из него. Я использую LINQ to SQL для получения данных из базы данных и веб-сервис WFC для доставки их в мое приложение.

Все работает нормально, когда я запускаю свое приложение в Visual Studio. При попытке опубликовать веб-службу в IIS - вызов веб-службы завершился неудачно.

Чтобы упростить свой вопрос, я сосредоточусь на совершенно новом веб-сервисе. Вот шаги, которые я делаю:

  1. Запустите Visual Studio 2008 -> Файл -> Создать -> Проект -> Веб -> Приложение службы WCF Название проекта: MyWcfService

  2. В результате Visual Studio создает пример проекта с внедренной веб-службой «Service1»

  3. Перестройка, запуск из Visual Studio (хост на сервере разработки ASP.NET) -> Все отлично работает, я вижу мой сервис по http://localhost:52489/Service1.svc ссылке

  4. Теперь я хочу разместить эту службу на своем IIS (у меня IIS7 на компьютере с Vista x86) Visual Studio -> щелкните правой кнопкой мыши Project -> Publish -> target location -> Create new web app с именем «MyWcfService» -> Publish

  5. Просто чтобы убедиться, проверьте мою папку C:\inetpub\wwwroot\ - теперь она содержит подкаталог «MyWcfService» со всеми необходимыми файлами.

  6. Открыть IE на моем ПК http://localhost/MyWcfService/Service1.svc

Результат:

Ошибка HTTP 404.3 - не найдена Запрашиваемая вами страница не может быть обработана из-за конфигурации расширения. Если> страница является скриптом, добавьте обработчик. Если файл должен быть загружен, добавьте карту MIME.

Я пытался удалить раздел «удостоверение личности» из web.config - та же проблема. Отключение брандмауэра также не помогает.

Кто-нибудь может мне помочь? Что я делаю не так? Может я что-то упустил?

Ответы [ 4 ]

3 голосов
/ 03 февраля 2010

За Николас Аллен , менеджер программ WCF / WWF, Silverlight @ Microsoft:

Какая регистрация в IIS отвечает за обработку файлов SVC? Регистрация состоит из двух частей.Одна часть связана с ASP.NET, а другая часть связана с WCF.Часть ASP.NET заключается в том, что ISAPI ASP.NET должен быть расширением службы для IIS.Часть WCF состоит в том, что обработчик HTTP должен быть управляемым обработчиком.Команды для настройки двух частей: «aspnet_regiis –i –enable» из инструментов платформы 2.0 и «ServiceModelReg.exe -r» из инструментов платформы 3.0.В результате получается управляемый обработчик «System.ServiceModel.Activation.HttpHandler, System.ServiceModel, версия = 3.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089» и модуль ISAPI «% SystemRoot% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll "для файлов * .svc в IIS.В сопоставлениях обработчиков IIS управляемый обработчик должен быть выше модуля ISAPI, чтобы это работало.Вместе две части запускают конвейер HTTP и передают полученные запросы в WCF.

1 голос
/ 03 февраля 2010

IIS будет направлять запросы в ASP .NET только для определенных файлов, таких как aspx по умолчанию. Я предполагаю, что у вас нет расширения svc, сопоставленного с asp .net. Попробуйте посмотреть на это http://msdn.microsoft.com/en-us/library/bb515343.aspx.

1 голос
/ 03 февраля 2010

Silverlight может вызывать веб-сервисы только в том же домене, что и приложение (где находится файл xap)

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

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
      <cross-domain-access>
            <policy>
                  <allow-from>
                        <domain uri="*" />
                  </allow-from>
                  <grant-to>
                        <resource path="/" include-subpaths="true" />
                  </grant-to>
            </policy>
      </cross-domain-access>
</access-policy>
0 голосов
/ 03 февраля 2010

Возможно, в IIS неправильно настроена ASP.Net. Взгляните на эту статью:

http://msdn.microsoft.com/en-us/library/aa964620.aspx

...