WCF Отдых с basicHttpBinding на IIS 7.5 500 ошибка - PullRequest
0 голосов
/ 15 февраля 2011

еще одна неудачная попытка получить службу WCF Rest (без файла svc) с использованием basicHttpBinding, развернутого в IIS 7.5.Я считаю, что у меня правильно настроен веб-сайт вместе с IIS.Я уверен, что проблема находится в моем конфиге.Я получаю ответ 500 Ошибка.У меня на этом боксе отлично работает веб MVC 3.

Служба WCF Rest использует basicHttpBinding с режимом безопасности Transportcredentialonly.Вот мой конфиг;

    <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
    <handlers>
      <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </handlers>
</system.webServer>
<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="AuthBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Basic"></transport>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="NamedService">
        <endpoint contract="Namespace.IService" binding="basicHttpBinding" bindingConfiguration="AuthBinding"></endpoint>
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <standardEndpoints>
      <webHttpEndpoint>
        <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
      </webHttpEndpoint>
    </standardEndpoints>
</system.serviceModel>

Текущая конфигурация web и IIS на основе других сообщений;

  • У меня создан пул приложений v4.0 для сети
  • У меня есть созданный веб-сайт, связанный с вышеуказанным пулом приложений
  • У меня включены как 32-битные, так и 64-битные фильтры ISAPI .NET v4
  • Я снова регистрирую v4 с Aspnet_regiis.exe -i
  • У меня установлен HTTP Redirect
  • У меня включена базовая аутентификация

Любая помощь будет принята с благодарностью.Я был на этом в течение дня.Кстати ... Я не вижу никаких сообщений о событиях.Я знаю, что DNS настроен правильно, потому что я могу убрать материал WCF и поместить временную HTML-страницу в сеть, и это работает.

---------------- ОБНОВЛЕНИЕ--------------------- По-прежнему возникают проблемы даже после использования этой урезанной конфигурации.Пара вещей, которые я пропустил, это x64 OS, и я использую замок в качестве IoC.Я запустил Frameword64 / aspnet_regiis.exe.

    <?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="castle" type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor"/>
  </configSections>
  <connectionStrings>
    <add name="Main.ConnectionString" connectionString="data source=blah;initial catalog=newdatabase;User ID=web;Password=testing;persist security info=False;packet size=4096;" providerName="System.Data.SqlClient" />
  </connectionStrings>
   <system.web>
    <compilation targetFramework="4.0" />
    <httpModules>
      <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Windsor" />
    </httpModules>
  </system.web>
  <castle>
    <properties>
      <myConnStr>data source=blah;initial catalog=newdatabase;User ID=web;Password=testing;persist security info=False;packet size=4096;" providerName="System.Data.SqlClient</myConnStr>
    </properties>
    <components>
      <component id="RestService" service="Namespace.Rest.IRestService, Namespace.Rest" type="Namespace.Rest.RestService, Namespace.Rest" lifestyle="PerWebRequest"/>
      <component id="Repository" service="Namespace.Domain.Interfaces.IRepository, Namespace.Domain" type="Namespace.Domain.Repository, Thumbfound.Domain" lifestyle="PerWebRequest">
        <parameters>
          <connectionString>#{myConnStr}</connectionString>
        </parameters>
      </component>
    </components>
  </castle>
   <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
  </system.webServer>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <standardEndpoints>
      <webHttpEndpoint>
        <!-- 
            Configure the WCF REST service base address via the global.asax.cs file and the default endpoint 
            via the attributes on the <standardEndpoint> element below
        -->
        <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
      </webHttpEndpoint>
    </standardEndpoints>
  </system.serviceModel>
</configuration>

Ответы [ 2 ]

4 голосов
/ 15 февраля 2011

еще одна неудачная попытка получить службу WCF Rest (без файла svc) с использованием basicHttpBinding , развернутой в IIS 7.5.

ваша проблема тут же - WCF REST должен использовать webHttpBinding - , а не basicHttpBinding (это SOAP привязка).

1 голос
/ 17 февраля 2011

Оказывается, это была проблема конфигурации Castle Windsor.

Решением моей проблемы было удаление раздела <httpmodules> в <system.web> и размещение моей конфигурации PerRequestLifestyleModule в разделе <modules> <system.webServer>.Мне кажется, IIS 7 не любит http-модули в интегрированном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...