Я разрабатываю приложение на основе .Net Framework 3.5 sp1 и размещаю его на сервере Windows 2008 (64 бит).
При просмотре службы wcf (.svc) локально все в порядке, но при просмотре с полным URL-адресом домена возникла ошибка.
локальный адрес выглядит так: http: //localhost/MyService.svc
а адрес домена такой: http://MySite.ir/MyService.svc
кстати страницы (.aspx) и другие файлы корректно работают как на локальном хосте, так и с адресом домена.
любая идея будет оценена
Вот подробная ошибка:
Ошибка HTTP 404.3 - не найдено
Запрашиваемая страница не может быть обслужена из-за конфигурации расширения. Если страница представляет собой сценарий, добавьте обработчик. Если файл должен быть загружен, добавьте карту MIME. Подробная информация об ошибках
Модуль: StaticFileModule
Уведомление: ExecuteRequestHandler
Обработчик: StaticFile
Код ошибки: 0x80070032
Запрошенный URL: http://MySite.ir:80/MyService.svc
Физический путь: D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc
Метод входа в систему: анонимный
Вход в систему Анонимный пользователь
Хорошо, вот ответ:
Перейти к сопоставлениям обработчиков | Добавить диспетчер обработчиков -> А затем добавить информацию ниже
Путь запроса: * .svc
Тип: System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version = 3.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089
Имя: svc-Integrated
источник
path="*.svc"
иverb="*"
и он работал большой. Таким образом, сработала строка, которую я использовал:<add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
(добавлено в configuration / system.webServer / handlers).Если у кого-то есть эта проблема на Windows Server 2012, ответ Билла Муна здесь решил ее для меня:
«Для Windows Server 2012 ... В диспетчере серверов нажмите« Добавить роли и компоненты », выберите соответствующий сервер, затем выберите« Функции ». В разделе« Функции .NET Framework 4.5 »вы увидите службы WCF, а под ним - найти активацию HTTP. "
источник
У меня на ноутбуке Windows 10, и я использую Visual Studio 2015 для разработки WCF. WCF отлично работает в Visual Studio, но при размещении в IIS я получил ту же ошибку.
Я проверил обработчик IIS. Расширение svc отсутствует. Поэтому я попытался добавить новый обработчик в IIS, как было предложено Мори в первом ответе. Я не нашел типа "System.ServiceModel.Activation.HttpHandler".
Итак, я открыл «Включить или выключить функции Windows» и установил функции, как показано на снимке экрана.
Это сработало для меня.
источник
Если вы используете .Net 4.x, PublicKeyToken - 31bf3856ad364e35.
Однако после этой публикации о правильной установке служб WCF в IIS обработчик был настроен для меня.
источник
Я хотел добавить это в качестве комментария к ответу, но у меня не хватило для этого репутации. Я попытался запустить ServiceModelReg и aspnet_regiis.exe с различными флагами и добавил функцию активации HTTP, но она все равно не сработала. Даже использование пользовательского интерфейса сопоставления обработчика в IIS не работало, так как он не мог найти System.ServiceModel.Activation.HttpHandler. В конечном итоге сработало добавление обработчика, о котором Мори упоминает вручную, в мой файл web.config.
<system.webServer> <handlers> <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
Мой проект запускал .Net 3.5 и IIS 7.5 в Windows 7 и IIS 7.0 на Win Server 2008 R2.
источник
Попробуйте снять флажок «Активация HTTP WCF» в окне «Включение или отключение Windows» ( см. Здесь ) и переустановите, перейдя в
%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\
и выполнить
ServiceModelReg -i
источник