Проблема при использовании службы WCF в mvc

У меня есть проект WCF с CSLA, и я опубликовал эту службу и приложение MVC на своем сервере IIS, но он выдает одну ошибку при вызове службы из веб-приложения.

System.ServiceModel.Security.SecurityNegotiationException: вызывающий объект не прошел проверку подлинности службы. ---> System.ServiceModel.FaultException: запрос токена безопасности не может быть удовлетворен из-за сбоя проверки подлинности.

Это мой сервис web.config

<system.serviceModel>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <services>
      <service name="Csla.Server.Hosts.WcfPortal" behaviorConfiguration="returnFaults">
        <endpoint binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_IWcfPortal" contract="Csla.Server.Hosts.IWcfPortal" />
      </service>
      <service name="Csla.Server.Hosts.Mobile.WcfPortal" behaviorConfiguration="returnFaults">
        <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IWcfPortal" contract="Csla.Server.Hosts.Mobile.IWcfPortal" />
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttpBinding_IWcfPortal" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647">
          <readerQuotas maxBytesPerRead="2147483647" maxArrayLength="2147483647" maxStringContentLength="2147483647" maxNameTableCharCount="2147483647" maxDepth="2147483647" />
        </binding>
      </basicHttpBinding>
      <wsHttpBinding>
        <binding name="wsHttpBinding_IWcfPortal" maxReceivedMessageSize="2147483647">
          <readerQuotas maxBytesPerRead="2147483647" maxArrayLength="2147483647" maxStringContentLength="2147483647" maxNameTableCharCount="2147483647" maxDepth="2147483647" />
        </binding>
      </wsHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="returnFaults">
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

Я использовал эту услугу в моем MVC web.config, как это.

<add key="CslaAuthentication" value="Csla" /> 
<add key="CslaDataPortalProxy" value="Csla.DataPortalClient.WcfProxy, Csla" /> 
<add key="CslaDataPortalUrl" value="http://www.someurl.net/WcfFullPortal.svc" />

Затем, после того как я вызвал службу непосредственно из своего проекта службы, все заработало нормально.

<add key="CslaDataPortalUrl" value="http://localhost:11170/WcfFullPortal.svc" />

А также попробовал с опубликованным IP-адресом, который также работает нормально

<add key="CslaDataPortalUrl" value="http://10.4.56.75/WcfFullPortal.svc" />

Единственная проблема, когда я использую опубликованное имя хоста (http://www.someurl.net/WcfFullPortal.svc). И я открыл этот URL в браузере, который работал.


person Nitheesh    schedule 22.08.2016    source источник


Ответы (2)


Добавьте следующую конфигурацию привязки сразу после раздела в разделе web.config <system.serviceModel>.

    <bindings>
        <wsHttpBinding>
           <binding name="TheBindingConfig">
               <security mode="None" />
          </binding>
        </wsHttpBinding>
    </bindings>
person Ray    schedule 22.08.2016
comment
Спасибо @Ray за повтор. Но это не работает для меня. Он показывает ту же ошибку. - person Nitheesh; 22.08.2016
comment
когда вы найдете решение, вы можете поделиться со мной? Спасибо - person Ray; 23.08.2016
comment
Я исправил эту проблему. Пожалуйста, найдите это выше. - person Nitheesh; 23.08.2016

просто измените Csla.DataPortalClient.WcfProxy на Csla.DataPortalClient.HttpProxy и <add key="CslaDataPortalUrl" value="http://www.someurl.net/WcfFullPortal.svc" /> на <add key="CslaDataPortalUrl" value="http://www.someurl.net/DataPortal/PostAsync" />

А также добавить

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
        {
            HttpContext.Current.User = new Csla.Security.UnauthenticatedPrincipal();
        }

в Global.asax.cs

person Nitheesh    schedule 23.08.2016