WCF HTTPS работает при доступе через браузер, но без кода.asp.net jquery - PullRequest
0 голосов
/ 22 декабря 2011

не могу найти решение моей проблемы. Я создал wcf, и я использую его из jquery на моей странице asp.net. Когда я развернул его, используя http: //, он работает нормально, но когда я использую https: // и изменил режим безопасности для транспорта, я получаю ошибки. Но если я просто установлю режим безопасности на none, я могу получить к нему доступ из браузера. Можете ли вы руководство, чтобы понять это? Я развернул его на Windows Server 2003. Спасибо!

 <system.serviceModel>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
    <behaviors>
      <endpointBehaviors>
        <behavior name="QPServiceAspNetAjaxBehavior">
          <enableWebScript />          
        </behavior>    
      </endpointBehaviors>      
    </behaviors>
    <services>      
      <service name="tService">
        <endpoint address="" behaviorConfiguration="tServiceAspNetAjaxBehavior"
          binding="webHttpBinding" bindingConfiguration="webBinding" contract="tService" />
      </service>   
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="webBinding">
          <security mode="None">
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
  </system.serviceModel>

Ответы [ 2 ]

0 голосов
/ 02 января 2012

после нескольких проб и ошибок. я нашел решение, которое позволяет конфигурацию wcf для HTTP и HTTPS, и приведенная ниже конфигурация является решением моей проблемы. спасибо за ответ на мой вопрос.

  <system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
                           multipleSiteBindingsEnabled="true" />
<behaviors>
  <endpointBehaviors>
    <behavior name="QPServiceAspNetAjaxBehavior">
      <enableWebScript />
    </behavior>
  </endpointBehaviors>
</behaviors>
<services>
  <service name="QPService">        
    <!-- http and https        -->
    <endpoint address=""
              behaviorConfiguration="QPServiceAspNetAjaxBehavior" 
              binding="webHttpBinding"
              bindingConfiguration="webBindingSecure" 
              contract="QPService"/>        
    <endpoint address="" 
              behaviorConfiguration="QPServiceAspNetAjaxBehavior" 
              binding="webHttpBinding" 
              bindingConfiguration="webBinding" 
              contract="QPService" />

    <!--http
    <endpoint address="" behaviorConfiguration="QPServiceAspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="QPService" />
    -->        
    <!--https        -->
    <endpoint address="" 
              behaviorConfiguration="QPServiceAspNetAjaxBehavior" 
              binding="webHttpBinding"
              bindingConfiguration="webBindingSecure" 
              contract="QPService"/>
  </service>
</services>
<bindings>
  <webHttpBinding>
    <binding name="webBinding">
      <security mode="None">
      </security>
    </binding>
    <binding name="webBindingSecure">
      <security mode="Transport">
      </security>
    </binding>
  </webHttpBinding>
</bindings>

0 голосов
/ 22 декабря 2011

Чтобы настроить ваш сервис для https на машине с windows 7, сделайте следующее:

1.Открытый IIS. Создайте новый веб-сайт, щелкнув правой кнопкой мыши папку сайтов и выберите «Добавить новый веб-сайт».

2. Теперь появится всплывающее окно добавления нового веб-сайта. введите сведения и в разделе «Привязки» выберите «Тип» для https, и порт изменится на 443, и отобразится раскрывающийся список сертификатов SSL.

3.Выберите сертификат из раскрывающегося списка, который используется для защиты канала связи для этого веб-сайта или приложений на этом веб-сайте.

После того, как вы выполните описанные выше шаги, вы создали веб-сайт, который прослушивает https. Теперь просто разместите свое приложение на этом веб-сайте, и когда вы попытаетесь просмотреть сервис в IE, вы сможете увидеть его и получить к нему доступ.

ПРИМЕЧАНИЕ. В вашей конфигурации я вижу, что вы не указали пространство имен службы. У вас должно быть полное название вашей услуги и договор на обслуживание.

У меня есть вышеуказанная настройка, и теперь у меня есть следующая конфигурация, через которую я могу просматривать свою службу WCF через https:

<service name="Sample.SampleService" behaviorConfiguration="TransportSecurity">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="test" contract="Sample.ISampleService">          
        </endpoint>
      </service>

<webHttpBinding>
        <binding name="test">
          <security mode="Transport"></security>
        </binding>
      </webHttpBinding>

<behavior name="TransportSecurity">
          <serviceCredentials>
            <serviceCertificate findValue="localhost" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
          </serviceCredentials>
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...