none
mvc 4 and WCF RRS feed

  • Вопрос

  • Создан сайт на mvc4 и wcf служба. Находятся на одном хостинге. на разных апп пулах. При запуске на девелоп сервере саит нормально подключается к службе. При публикации отказывается подключаться. При этом внятных ошибок не выдает. Апп пулы запускаются под доменными ползьвателями. На саите включена виндовая авторизация и имперсонация на wcf тоже виндовая авторизация без имперсонации.

    spn прописан для саита SetSPN -S HTTP/sitename domain/servername

    Подскажите в чем может быть трабл? 

    11 июля 2012 г. 7:54

Все ответы

  • "При запуске на девелоп сервере саит нормально подключается к службе. При публикации отказывается подключаться." - у Вас подключение к WCF идёт с клиента или сервера? И что значит отказывается, что показывает, что пишется?

    "При этом внятных ошибок не выдает." - а из невнятных, что выдаёт?

    11 июля 2012 г. 8:14
    Модератор
  • Подключение идет с сайта. Если его запускать на девелоперской  машине. 
    Подключение диет. Если сайт опубликовать на сервер, то не работает. Выдает стандартную страницу ошибки. Логер ничего не пишет. Экзепшен выдает только 
    An error occurred while processing this request.=e.Message 
    Microsoft.Data.Services.Client=e.Source 
    at System.Data.Services.Client.DataServiceRequest.Execute[TElement](DataServiceContext context, QueryComponents queryComponents)
     at System.Data.Services.Client.DataServiceQuery`1.Execute()
     at System.Data.Services.Client.DataServiceQuery`1.GetEnumerator()
     at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
     at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
     at PeopleRegistration.Controllers.HomeController.About()=e.StackTrace

    11 июля 2012 г. 8:46
  • "Логер ничего не пишет" - Ваш логер? Трассировка включена?
    11 июля 2012 г. 8:54
    Модератор
  • В качестве логера использую Elmah.Mvc
    11 июля 2012 г. 9:05
  • Включите трассировку, для получения более подробной информации. Логер этого не покажет.
    11 июля 2012 г. 9:06
    Модератор
  • Трассировку включил с конфигом,который в статье. К сожалению в ней ничего полезного не увидел для понимания проблемы.
    11 июля 2012 г. 9:23
  • Включил трассировку так же на сервисе. Показывает что запрос приходит. Но пользователя не показывает. 
    11 июля 2012 г. 10:28
  • У Вас в настройках всё включено, в Message Loging все опции выбраны? Сделайте лог и дайте ссылку, если можно?
    11 июля 2012 г. 10:32
    Модератор
  • Error creating the Web Proxy specified in the 'system.net/defaultProxy' configuration section.=e.Message 
    mscorlib=e.Source 
    Server stack trace: at System.Net.Configuration.DefaultProxySectionInternal.GetSection() at System.Net.WebRequest.get_InternalDefaultWebProxy() at System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint) at System.Net.HttpRequestCreator.Create(Uri Uri) at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) at System.ServiceModel.Channels.HttpChannelFactory`1.GetWebRequest(EndpointAddress to, Uri via, NetworkCredential credential, TokenImpersonationLevel impersonationLevel, AuthenticationLevel authenticationLevel, SecurityTokenProviderContainer proxyTokenProvider, SecurityTokenContainer clientCertificateToken, TimeSpan timeout, Boolean isWebSocketRequest) at System.ServiceModel.Channels.HttpChannelFactory`1.GetWebRequest(EndpointAddress to, Uri via, SecurityTokenProviderContainer tokenProvider, SecurityTokenProviderContainer proxyTokenProvider, SecurityTokenContainer clientCertificateToken, TimeSpan timeout, Boolean isWebSocketRequest) at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.GetWebRequest(EndpointAddress to, Uri via, SecurityTokenContainer clientCertificateToken, TimeoutHelper& timeoutHelper) at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.GetWebRequest(EndpointAddress to, Uri via, TimeoutHelper& timeoutHelper) at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.SendRequest(Message message, TimeSpan timeout) at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at PeopleRegistration.ADWorkRef.ADContract.FindLastName(String LastName) at PeopleRegistration.Controllers.HomeController.Contact()=e.StackTrace
    12 июля 2012 г. 7:15
  • Может быть попробовать отключить использование прокси по умолчанию в web.config?

      <defaultProxy>
            <proxy usesystemdefault="False"/>
        </defaultProxy>

    Или у вас там что-то указано?

    Для связи [mail]

    12 июля 2012 г. 8:27
    Модератор
  • Попробуйте также пул в котором находится WCF запустить от пользователя с более высокими привилегиями, если конечно имеете возможность. А сама служба у Вас где хостится, в другом ASP.NET приложении?
    12 июля 2012 г. 9:33
    Модератор
  • Да. Сайт и служба находятся в разных приложения в разных пулах. Запускаются под разными учетными записями.
    12 июля 2012 г. 9:47
  • Это было с самого начала понятно, но хостом WCF что является?
    12 июля 2012 г. 9:51
    Модератор
  • Выдает ошибку сйчас

    System.NotSupportedExceptionThe authentication schemes configured on the host ('Negotiate') do not allow those configured on the binding 'BasicHttpBinding' ('Anonymous'). Please ensure that the SecurityMode is set to Transport or TransportCredentialOnly. Additionally, this may be resolved by changing the authentication schemes for this application through the IIS management tool, through the ServiceHost.Authentication.AuthenticationSchemes property, in the application configuration file at the <serviceAuthenticationManager> element, by updating the ClientCredentialType property on the binding, or by adjusting the AuthenticationScheme property on the HttpTransportBindingElement.

    <bindings>
          <basicHttpBinding>
            <binding name="basicHttpEndpointBinding">
              
              <security mode="TransportCredentialOnly">
                <transport clientCredentialType="Windows" />
                
              </security>
            </binding>
          </basicHttpBinding>
        </bindings>
    <behaviors>
          <serviceBehaviors>
            
            <behavior>
              <serviceAuthenticationManager authenticationSchemes="Negotiate"/>
              <serviceCredentials>
                <windowsAuthentication includeWindowsGroups="true" allowAnonymousLogons="false"/>
                
              </serviceCredentials>
              <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
              
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
              
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
    18 июля 2012 г. 9:23
  • Посмотрите вот эту статью, думаю это то что Вам надо. Вот она на русском.
    • Изменено YatajgaEditor 18 июля 2012 г. 11:42 Дополнил
    18 июля 2012 г. 11:40
    Модератор
  • Если включена анонимная авторизация то все работает номрально. Но windows авторизация так и не хочет работать, падает все с той же ошибкой.
    18 июля 2012 г. 13:07
  • А Вы пробовали включить имперсонацию для WCF, что тогда? Если Вам удалось решить проблему, то будет здорово если поделитесь решением. Не остовляйте топик без ответа.
    1 августа 2012 г. 7:11
    Модератор
  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]

    14 августа 2012 г. 7:11
    Модератор