Публикация WCF .NET 3.5 в IIS 6 (Windows Server 2003) - PullRequest
3 голосов
/ 08 июня 2010

Я разрабатывал веб-сервис WCF с использованием .NET 3.5 с IIS7, и он отлично работает на моем локальном компьютере.Я попытался опубликовать его на сервере под управлением IIS 6, и хотя я могу просматривать WSDL в своем браузере, клиентское приложение, похоже, не подключается к нему правильно.Я запустил приложение для отслеживания пакетов (Charles Proxy), и ответ на первое сообщение возвращается клиенту пустым (0 байт).Каждое сообщение после первого тайм-аута.

Служба WCF является частью более крупного приложения, использующего ASP .NET 3.5.Это приложение прекрасно работает на IIS 6 уже некоторое время, поэтому я думаю, что это что-то особенное для WCF.Я также попытался сгенерировать исключение в файле SVC, чтобы увидеть, насколько далеко оно зашло, и исключение не было выброшено, поэтому у меня такое ощущение, что это более низкий уровень, который не работает.

Есть мысли?Что-нибудь мне нужно установить на сервер IIS5?Если да, то как я могу по-прежнему просматривать WSDL в своем браузере?

Служба используется через файл SVC с использованием basicHttpBinding

Вот основная идея Web.Config (дайте мне знатьесли вам нужна другая его часть):

<system.net>
  <defaultProxy>
    <proxy usesystemdefault="False" proxyaddress="http://127.0.0.1:80" bypassonlocal="True"/>
  </defaultProxy>
</system.net>

...

<system.serviceModel>
  <services>
    <service name="Nexternal.Service.XMLTools.VNService" behaviorConfiguration="VNServiceBehavior">
      <!--The first endpoint would be picked up from the confirg
      this shows how the config can be overriden with the service host-->
      <endpoint address="" binding="basicHttpBinding" contract="Nexternal.Service.XMLTools.IVNService" />
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" name="mexHttpBinding" />
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="VNServiceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

Ответы [ 3 ]

2 голосов
/ 08 июня 2010

Я постоянно размещаю службы WCF в IIS 5.1 и 6. В этом нет ничего особенного, кроме того, что на сервере установлен .Net 3.0+, который, как я вижу, основан на комментариях ASP.NET 3.5 выше.

Вы размещаете сервис в файле .svc? Если бы вы могли предоставить дополнительную информацию, я уверен, что эта проблема может быть решена быстро. Как вы размещаете сервис WCF? Как выглядит ваша конечная точка / поведение в вашем конфигурационном файле? Какой тип привязки вы используете? Помните, что в IIS 6 и ниже можно размещать только http-привязки. Использование IIS 7 позволяет вам использовать WAS, что позволяет использовать привязки не-http для ваших служб.

Учитывая, что вы видите свой wsdl, я бы сказал, что ваша конечная точка MEX работает, а другая ваша конечная точка - нет.

2 голосов
/ 16 августа 2010

Решение может быть очень легко сложным. Я использую .net 4.0, и поначалу было невозможно использовать IIS 6 и Windows Server 2003. После некоторых копий я сделал следующее и заработал:

  1. Добавить сопоставление расширений .svc в диспетчер IIS. Щелкните правой кнопкой мыши веб-сайт, вкладку домашнего каталога, нажмите кнопку настройки и добавьте C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll в расширение svc.
  2. Удаление обновлений KB976769v2 и KB980773 из Windows Server 2003.
  3. Удалите targetFramework = "4.0" из вашего файла web.Config.
  4. Добавьте serviceHostingEnvironment multipleSiteBindingsEnabled = "true" в system.ServiceModel сразу после тега system.ServiceModel.
  5. Щелкните правой кнопкой мыши по моему виртуальному каталогу, выберите вкладку ASP.Net и выберите 4.0.30319 или что-либо другое в соответствующем случае.

Скорее всего, вам может потребоваться предоставить права доступа NT AUTHORITY / NETWORK SERVICE для доступа к вашим базам данных, если они указаны в разделе строки подключения вашего файла конфигурации.

0 голосов
/ 08 июня 2010

WCF в значительной степени зависит от службы активации Windows, и я помню, что было сложно (лучше сказать, довольно болезненно) запустить его в IIS6, и именно поэтому мы в конечном итоге перешли на IIS7.

...