Я получил службу WCF, размещенную в общей среде (мы снимаем пространство у компании, предоставляющей веб-хостинг, но у нас есть выделенный пул приложений), и я получил веб-приложение asp.net, которое вызывает службу wcf. Оба проекта являются проектами .NET 4.
Если я запускаю свое веб-приложение из VS2010, я могу легко выполнять вызовы wcf. Однако у меня есть исключения, если я опубликую веб-сайт в этой общедоступной среде и оттуда выполняю wcf-вызовы.
Сведения об исключении:
[FaultException: запрос на токен безопасности не может быть выполнен из-за сбоя аутентификации.]
System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault (сообщение-сообщение, цель EndpointAddress) +5499790
System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody (Сообщение входящих сообщений, SspiNegotiationTokenProviderState sspiState) + 49
[SecurityNegotiationException: вызывающая сторона не была аутентифицирована службой.]
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) +9464367
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) + 345
Я также публикую сайт на моей локальной машине, он тоже работает.
Вот мой конфиг на стороне сервера:
<wsHttpBinding>
<binding name="wsHttpBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</wsHttpBinding>
Код на стороне клиента:
factory.Credentials.Windows.Username = "user";
factory.Credentials.Windows.Password = "psw";
factory = new ChannelFactory<IService>(binding, serviceAddress);
factory.Open();
service = factory.CreateChannel();
Я хочу использовать wsHttpBinding вместо basicHttpBinding, и мне нужна некоторая защита, поэтому я не хочу устанавливать режим безопасности на None.
Версия IIS 7 для Windows 2008 R2 и разрешена анонимная проверка подлинности. Олицетворение Asp.net отключено.
Я не думаю, что в этих настройках есть что-то неправильное, потому что он работает, если я запускаю проект веб-сайта из VS2010.
Спасибо за любую помощь.
Xiaosu