Перенос WCF с собственного хостинга на хостинг IIS/AppFabric

У меня есть WCF с привязкой TCP, HTTP и Mex в собственном файле, и все работает отлично. Тем не менее, я хочу перенести его на AppFabric и сохранить те же привязки, но мне очень трудно это сделать. Я добавил сервисное приложение WCF, исправил файл svc, удалил консольное приложение Self-Hosting, но продолжаю получать ужасное Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Registered base address schemes are [http]. ошибка. Какие изменения я должен внести из моего файла app.config в мой файл web.config, чтобы это заработало? Я даже не пытался опубликовать его в IIS, но... эта ошибка, которую я получаю, исходит от веб-сервера VS
Ниже приведен мой предыдущий файл app.config для собственного хостинга:

<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
      <bindings>
        <basicHttpBinding>
          <binding name="SimpleBinding" />
        </basicHttpBinding>
        <netTcpBinding>
          <binding name="DefaultTCPBinding" closeTimeout="01:00:00" receiveTimeout="01:00:00"
                sendTimeout="01:00:00" transactionFlow="true" transactionProtocol="OleTransactions"
                maxBufferSize="5242880" maxReceivedMessageSize="5242880">
            <reliableSession inactivityTimeout="01:00:00" />
          </binding>
        </netTcpBinding>
        <wsHttpBinding>
          <binding name="RSAlarmEvent" closeTimeout="00:01:00" openTimeout="00:01:00"
              receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
              transactionFlow="false" hostNameComparisonMode="StrongWildcard"
              maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
              messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
              allowCookies="false">
            <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
            <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
            <security mode="Message">
              <transport clientCredentialType="Windows" proxyCredentialType="None"
                  realm="" />
              <message clientCredentialType="Windows" negotiateServiceCredential="true"
                  algorithmSuite="Default" />
            </security>
          </binding>
        </wsHttpBinding>
        <webHttpBinding>
          <binding name="ScriptBindig" crossDomainScriptAccessEnabled="true" />
        </webHttpBinding>
      </bindings>
      <behaviors>
        <endpointBehaviors>
          <behavior name="WebScriptBehavior">
            <enableWebScript />
          </behavior>
        </endpointBehaviors>
        <serviceBehaviors>
          <behavior name="MetadataBehavior">
            <serviceMetadata httpGetEnabled="true" httpGetBinding="webHttpBinding"
                  httpGetBindingConfiguration="" />
            <serviceDebug includeExceptionDetailInFaults="true" />
            <serviceThrottling maxConcurrentCalls="64" maxConcurrentSessions="400"
                  maxConcurrentInstances="464" />
          </behavior>
        </serviceBehaviors>
      </behaviors>
      <services>
        <service behaviorConfiguration="MetadataBehavior" name="MyServer.Implementation.MyAppImplementation">
          <endpoint address="" binding="netTcpBinding" bindingConfiguration="DefaultTCPBinding"
                name="MyAppTCPEndpoint" contract="MyServer.Interfaces.IMyApp" />
          <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
                name="MyAppMex" contract="IMetadataExchange" />
          <endpoint address="ws" behaviorConfiguration="" binding="basicHttpBinding"
                bindingConfiguration="SimpleBinding" name="MyApp" contract="MyServer.Interfaces.IMyApp" />
          <host>
            <baseAddresses>
              <add baseAddress="net.tcp://desk01:9878/MyAppService" />
              <add baseAddress="http://desk01:9876/MyAppService/" />
            </baseAddresses>
          </host>
        </service>
      </services>
      <diagnostics>
      <messageLogging logEntireMessage="true"
                      logMalformedMessages="true"
                      logMessagesAtTransportLevel="true" />
    </diagnostics>
  </system.serviceModel>
</configuration>

Что мне нужно изменить?
Ткс


person Pascal    schedule 18.03.2011    source источник


Ответы (1)


Только IIS не может размещать конечные точки, отличные от HTTP. Вы также должны установить (активировать функцию) службу активации Windows (WAS). После установки вы должны включить привязку net.tcp для вашего сайта в консоли управления IIS.

person Ladislav Mrnka    schedule 18.03.2011
comment
Да, я знаю. У меня установлен AppFabric с WAS и целых девять метров. Но эта ошибка, которую я получаю, все еще возникает при отладке с использованием сервера Visual Studio. Я еще не IIS. - person Pascal; 19.03.2011
comment
Вы должны быть в IIS, если хотите использовать Net.Tcp. Встроенный веб-сервер VS (Cassini) поддерживает только конечные точки HTTP. - person Ladislav Mrnka; 19.03.2011
comment
Не знал этого... :-/ Спасибо за ваше время и ответ! Я удалил tcp, и это сработало... Я попробую это в AppFabric, чтобы посмотреть, как это работает. - person Pascal; 19.03.2011