WCF по SSL - 404 ошибки

Я думаю, что это может быть тем, что Вы ищете... http://topfunky.com/clients/peepcode/REST-cheatsheet.pdf

38
задан eidylon 5 October 2009 в 19:10
поделиться

4 ответа

Хорошо, я, по-видимому, исправил проблему, и Я понятия не имею, почему и как.

Вот что я сделал.

  • Я добавил СОВЕРШЕННО НОВУЮ ПУСТУЮ службу WCF с поддержкой Silverlight
  • Затем я обновил web.config, чтобы отразить обе службы.
  • Я буквально просто скопировал и вставил все, что касается первой службы, во вторую службу, кроме имя.

Почему это исправлено, я абсолютно НЕ знаю.

FWIW для всех, вот мой новый раздел web.config ServiceModel со второй службой в нем ...

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="basicHttpBinding">
            </binding>
            <binding name="basicHttpsBinding">
                <security mode="Transport">
                    <transport clientCredentialType ="None"/>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="standingsBehavior">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
                <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true">
        <baseAddressPrefixFilters>
            <add prefix="http://www.mydomain.com/"/>
        </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
    <services>
        <service behaviorConfiguration="standingsBehavior" name="lijslwebdata">
            <endpoint address="" binding="basicHttpBinding" contract="lijslwebdata"/>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
        <service behaviorConfiguration="standingsBehavior" name="sslwebdata">
            <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpsBinding" contract="sslwebdata"/>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
    </services>
</system.serviceModel>
1
ответ дан 27 November 2019 в 03:46
поделиться

Кажется, все верно, никаких явных ошибок ...

Всего одно наблюдение / вопрос: где находится ваш * .svc файл ??

В сообщении об ошибке я вижу:

 https://www.mydomain.com/myservice.svc 

Действительно ли ваш * .svc файл находится в виртуальном каталоге верхнего уровня вашего сайта?

Обычно файл * .svc находится внутри виртуального каталога в IIS, и поэтому адрес будет примерно таким:

 https://www.mydomain.com/YourVirtualDirectory/myservice.svc 

Конечно, вы можете развернуть приложение ASP.NET и файл * .svc службы WCF в корень вашего IIS - но, по моему опыту, это не очень распространено.

Просто вещь, которую нужно проверить .....

Marc

1
ответ дан 27 November 2019 в 03:46
поделиться

У меня была такая же проблема на моем конце. Ваш пост помог мне понять, в чем проблема. вот раздел моей модели обслуживания. Я обнаружил, что это были ключи httpsGetEnabled , а затем установил конфигурацию привязки Надеюсь, это поможет.

<system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="RequestImageBehavior">
                    <serviceMetadata **httpsGetEnabled**="true" />
                    <serviceDebug includeExceptionDetailInFaults="false" />
                  <dataContractSerializer maxItemsInObjectGraph="1073741824" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <services>
            <service behaviorConfiguration="RequestImageBehavior" name="RequestImage">
                <endpoint address="" 
                          binding="wsHttpBinding" 
                          **bindingConfiguration**="HttpsBinding"
                          contract="IRequestImage">
                </endpoint>
                <endpoint address="mex" 
                          binding="mexHttpBinding" 
                          contract="IMetadataExchange" />
            </service>
        </services>
      <bindings>
        **<wsHttpBinding>
          <binding name="HttpsBinding">
            <security mode="Transport">
              <transport clientCredentialType="None"/>
            </security>
          </binding>
        </wsHttpBinding>**
      </bindings>
    </system.serviceModel>
27
ответ дан 27 November 2019 в 03:46
поделиться

Я недавно имел дело с этим и хочу чтобы добавить твик. Если вы будете следовать приведенным выше инструкциям, вы сможете заставить службу работать с HTTPS, но не одновременно с HTTP и HTTPS. Для этого вам необходимо иметь два узла конфигурации конечных точек, по одному для каждого протокола, как показано ниже:

 <service name="MyCompany.MyService" >
    <endpoint address="" behaviorConfiguration="AspNetAjaxBehavior"
      binding="webHttpBinding" contract="MyCompany.MyService" bindingConfiguration="sslBinding" />
    <endpoint address="" behaviorConfiguration="AspNetAjaxBehavior"
      binding="webHttpBinding" contract="MyCompany.MyService" />
  </service>

(взято из моей кодовой базы, при необходимости отрегулируйте конфигурацию поведения и привязку)

11
ответ дан 27 November 2019 в 03:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: