Доступ запрещен (System.ComponentModel.Win32Exception) при вызове службы WCF
Размещение служб WCF через exe-хост в Windows 8.1 Я получаю ошибку, связанную с AppContainer. Я не могу найти хорошую документацию по методам в верхней части трассировки стека. Вид хвататься за соломинку здесь.
"System.ComponentModel.Win32Exception (0x80004005): доступ запрещен \ r \ n \ r \ n Стрэк стека сервера: \r\n
в System.ServiceModel.Channels.AppContainerInfo.GetCurrentProcessToken()\r\n
в System.ServiceModel.Channels.AppContainerInfo.RunningInAppContainer()\r\n
в System.ServiceModel.Channels.AppContainerInfo.get_IsRunningInAppContainer()\r\n
в System.ServiceModel.Channels.PipeSharedMemory.BuildPipeName(String pipeGuid)\r\n
в System.ServiceModel.Channels.PipeSharedMemory.get_PipeName()\r\n
в System.ServiceModel.Channels.PipeSharedMemory.GetPipeName(AppContainerInfo appInfo)\r\n
в System.ServiceModel.Channels.PipeConnectionInitiator.GetPipeName(Uri uri, IPipeTransportFactorySettings transportFactorySettings)\r\n
в System.ServiceModel.Channels.NamedPipeConnectionPoolRegistry.NamedPipeConnectionPool.GetPoolKey(адрес конечной точки, адрес Uri через) \ r \ n
в System.ServiceModel.Channels.CommunicationPool`2.TakeConnection(адрес конечной точки, адрес URI через, тайм-аут TimeSpan, TKey& ключ) \ r \ n
в System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(время ожидания TimeSpan) \ r \ n
в System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(время ожидания TimeSpan) \ r \ n
в System.ServiceModel.Channels.CommunicationObject.Open(время ожидания TimeSpan) \ r \ n
в System.ServiceModel.Channels.ServiceChannel.OnOpen(время ожидания TimeSpan) \ r \ n
в System.ServiceModel.Channels.CommunicationObject.Open(время ожидания TimeSpan) \ r \ n
в System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(канал ServiceChannel, время ожидания TimeSpan) \ r \ n
в System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(время ожидания, каскад CallOnceManager) \ r \ n
в System.ServiceModel.Channels.ServiceChannel.Call(строковое действие, логическое одностороннее действие, операция ProxyOperationRuntime, Object[] ins, Object[] ауты, TimeSpan timeout)\r\n
в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(метод IMethodCallMessageCall, операция ProxyOperationRuntime) \ r \ n
в System.ServiceModel.Channels.ServiceChannelProxy.Invoke(сообщение IMessage)\r\n\r\n Исключение, переброшенное в [0]: \r\n в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)\ г \ п
в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, тип Int32) \ r \ n
в IAuthenticationService.AuthTempTokens(токены TokenSet, системный идентификатор CAMSSystem, строковый идентификатор учетной записи, строковый ipAddress, строковый уникальный идентификатор) \ r \ n
в login_Default.AuthenticateAndRedirect() в c:\Source\RiverTam\Source\Systems\Web\PMI\PMI\Default.aspx.cs: строка 167"
2 ответа
Таким образом, сайт IIS был настроен на олицетворение, и у этого пользователя не было прав! Обнаружил пользователя с помощью Process Monitor. Неудивительно, что удаление следующей строки позволило всем работать, поскольку мой пользователь, администратор, имеет права.
<system.web>
<identity impersonate="true" username="user" password="password" />
</system.web>
Похоже, вы пытаетесь использовать привязку именованного канала и не можете использовать именованные каналы в приложении на основе WinRT.