Я разрабатываю веб-службу WCF с использованием .NET 3.5 с IIS7 и отлично работает на моем локальном компьютере. Я попытался опубликовать его на сервере с IIS 6, и хотя я могу просматривать WSDL в своем браузере, клиентское приложение, похоже, не правильно подключается к нему. Я запустил приложение для обнюхивания пакетов (Charles Proxy), и ответ на первое сообщение возвращается клиенту пустым (0 байтов). Каждое сообщение после первого раза истекает.Публикация WCF .NET 3.5 на IIS 6 (Windows Server 2003)
Служба 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>
Я отредактировал мой вопрос, чтобы добавить фрагменты из web.config. Кроме того, мой коллега упомянул, что IIS на сервере, который я публиковал, был обновлен до IIS6, поэтому я ошибся, когда сказал IIS 5.1. Не уверен, что это помогает. Я также использую страницу SVC, чтобы выставить службу, используя basicHttpBinding. Спасибо за помощь! – Adam
Быстрый тест. Вам не нужна конечная точка Mex, если вы подвергаете привязку http с помощью httpGetEnabled = true. Удалите конечную точку Mex и посмотрите, можете ли вы все-таки попасть в WSDL. Кроме того, удалите строку aspNetCompatibilityEnabled = true, если вы не требуете aspCompatibilty в сервисе. Для чего вы используете прокси-сервер localhost, и что произойдет, если вы удалите его из конфигурации? – CkH
Yup, я просто загрузил его без конечной точки mex и WSDL подходит нормально. – Adam