WCF - изменение конечной точки обращается к результатам в securityexception

5
задан Masoud 14 June 2016 в 06:02
поделиться

5 ответов

По умолчанию wsHttpBinding использует аутентификацию Windows. Я не уверен, как хостинг в IIS влияет на тот сценарий.

Если Вы не хотите включенной безопасности, можно добавить элемент для безопасности и установить элемент режима ни на "Один" к конфигурации на обоих концах для выключения настройки по умолчанию.

Я думаю, что это может добиться цели - я добавил раздел для wsHttpBinding и установил bindingConfiguration Вашего сервиса для указания на недавно добавленные свойства привязки:

<system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="wsHttpBind">
          <security mode="None">
            <transport clientCredentialType="None" protectionLevel="EncryptAndSign" />
            <message clientCredentialType="None" algorithmSuite="Default" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
        <service behaviorConfiguration="ServiceBehavior" 
            name="RService">
            <endpoint address="" 
                binding="wsHttpBinding" 
                bindingConfiguration="wsHttpBind" 
                name="RService" 
                contract="IRService"> 
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint address="mex" 
                binding="mexHttpBinding" 
                name="MetadataExchange" 
                contract="IMetadataExchange" />
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="ServiceBehavior">
            <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="true"/>
                <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>
8
ответ дан 13 December 2019 в 19:38
поделиться

проверьте это от своей конфигурации:

...    
     <identity>
      <dns value="localhost" />
     </identity>
...

afaik wsHttpBinding имеет безопасность сообщения, включенную по умолчанию. и когда это проверяет по "localhost" значения DNS, это перестало работать.

3
ответ дан 13 December 2019 в 19:38
поделиться

Вы используете MessageSecurity с сертификатами? это могло быть проблемой сертификата (неправильное имя хоста, самоподписанный сертификат, не установленный, и т.д.)

0
ответ дан 13 December 2019 в 19:38
поделиться

Удаление блока идентификационных данных не работало, хотя действительно давал мне общее представление: Если я изменяю адрес конечной точки от:

        R.Endpoint.Address = new EndpointAddress(new Uri("http://bigpuss.homeip.net/RServer/RService.svc"));

кому:

        R.Endpoint.Address = new EndpointAddress(new Uri("http://localhost/RServer/RService.svc"));

затем все хорошо работает! Soo, очевидно, нарушение о нелокальном адресе URL. Есть ли какие-либо другие области в конфигурации, где безопасность настраивается?

0
ответ дан 13 December 2019 в 19:38
поделиться

Вот моя Сервисная конфигурационная информация, я использую wshttpbinding:

<system.serviceModel>
    <services>
  <service behaviorConfiguration="ServiceBehavior" name="RService">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration=""
 name="RService" contract="IRService">
 <identity>
  <dns value="localhost" />
 </identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" name="MetadataExchange"
 contract="IMetadataExchange" />
   </service>
</services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="ServiceBehavior">
                <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="true"/>
                <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
</system.serviceModel>
0
ответ дан 13 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

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