Я ищу весь интернет, чтобы решить эту проблему, и хотя я нашел очень похожие проблемы, ни одна из них не была моей. Вот сделка:
Я хочу настроить веб-службу WCF (.Net 4.0 и VS 2010) с Spring.NET 1.3.1. для инъекции зависимости. Сейчас я использую IIS 7 (но, возможно, позже мне потребуется настроить его для другого IIS).
Я НЕ настраиваю это для работы с HTTPS (вероятно, я хочу в будущем, но сейчас это не так).
Сначала я настроил веб-службу WCF без Spring.NET, и она отлично работала!
Сценарий 1:
Тогда я добавил это:
<object id="geoServiceWCF" type="ExampleProj.Web.WebServices.GeoServiceWCF" singleton="false" >
</object>
<object id="GeoServiceWCFServiceHost" type="Spring.ServiceModel.Activation.ServiceHostFactoryObject, Spring.Services">
<property name="TargetName" value="geoServiceWCF" />
</object>
... Я получил следующее исключение:
Не удалось найти базовый адрес, который соответствует схеме http для конечной точки с привязкой WebHttpBinding. Схемы зарегистрированных базовых адресов: []. (Ошибка создания объекта с именем 'GeoServiceWCFServiceHost')
А вот моя часть Web.Config для WCF:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="AJAXFriendly">
<enableWebScript />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="geoServiceWCF">
<endpoint address=""
behaviorConfiguration="AJAXFriendly"
binding="webHttpBinding"
contract="ExampleProj.Web.WebServices.IGeoServiceWCF" >
</endpoint>
</service>
</services>
</system.serviceModel>
Сценарий 2:
Если я определю address = "http://localhost/ExampleProj/WebServices/GeoServiceWCF.svc" в качестве исключения, я получу еще одну ошибку: Свойство HttpGetEnabled ServiceMetadataBehavior имеет значение true, а свойство HttpGetUrl является относительным адресом, но базовый адрес http отсутствует. Либо укажите базовый адрес http, либо задайте для HttpGetUrl абсолютный адрес. (Ошибка создания объекта с именем 'GeoServiceWCFServiceHost')
Сценарий 3:
Затем, если я установлю httpGetEnabled = "true" Я получу Доступ запрещен Ошибка.
Дополнительная информация: при попытке регистрации URL-адреса возникла проблема http://+:80/ExampleProj/WebServices/GeoServiceWCF.svc/ (да, с символом «+»)
Основная информация
Я следую очень простым шагам из документа Spring.NET. Я думаю, что я что-то упустил, потому что
Я не могу поверить, что мне пришлось установить так много странных параметров, чтобы это работало.
Извините за длинный вопрос, я хотел предоставить как можно больше информации.
Заранее спасибо !!