Я пытаюсь разместить свой сервис, используя следующую конфигурацию.
<system.serviceModel>
<services>
<service name="Test.MyService" behaviorConfiguration="MyServiceBehavior">
<!-- Service Endpoints -->
<endpoint address="MyTestService" binding="wsHttpBinding" bindingConfiguration="WebserviceHttpBinding" contract="Test.IMyService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="WebserviceHttpBinding">
<security mode="Message">
<message clientCredentialType="UserName" negotiateServiceCredential="false"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Test.CredentialValidator, Test"/>
<serviceCertificate findValue="RPKey" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
</serviceCredentials>
<!-- 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>
Когда я отлаживаю этот сервис, у меня нет проблем. Я размещал этот сервис в IIS, используя веб-сайт. Когда я просматриваю эту услугу из IIS, я получаю следующее исключение.
Ошибка сервера в «/ MyTestService»
Применение.
Набор ключей не существует
Описание: необработанное исключение
произошло во время исполнения
текущий веб-запрос. Пожалуйста, просмотрите
трассировка стека для получения дополнительной информации о
ошибка и откуда она возникла
код.
Сведения об исключении:
System.Security.Cryptography.CryptographicException:
Набор ключей не существует
Ошибка источника:
Создано необработанное исключение
во время исполнения текущего
веб-запрос. Информация относительно
Происхождение и место исключения
можно определить с помощью исключения
трассировка стека ниже.
Трассировка стека:
[CryptographicException: набор ключей не существует
]
System.Security.Cryptography.Utils.CreateProvHandle (параметры CspParameters, логический randomKeyContainer) +369
System.Security.Cryptography.Utils.GetKeyPairHelper (параметры CspAlgorithmType keyType, параметры CspParameters, логический randomKeyContainer, Int32 dwKeySize, SafeProvHandle & safeProvHandle, SafeKeyHandle & safeKeyHandle) +151
System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair () +85
System.Security.Cryptography.RSACryptoServiceProvider..ctor (параметры Int32 dwKeySize, CspParameters, логическое значение useDefaultKeySize) +280
System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey () +468
System.ServiceModel.Security.SecurityUtils.EnsureCertificateCanDoKeyExchange (сертификат X509Certificate2) + 85
[ArgumentException: сертификат 'CN = RPKey' должен иметь закрытый ключ, способный к обмену ключами. Процесс должен иметь права доступа к закрытому ключу.]
System.ServiceModel.Security.SecurityUtils.EnsureCertificateCanDoKeyExchange (сертификат X509Certificate2) +15832031
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateServerX509TokenProvider () +45
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateLocalSecurityTokenProvider (RecipientServiceModelSecurityTokenRequirement receiveientRequirement) +73
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateSecurityTokenProvider (требование SecurityTokenRequirement) +65
System.ServiceModel.Security.SessionRenewSecurityTokenManager.CreateSecurityTokenProvider (требование SecurityTokenRequirement) +14
System.ServiceModel.Security.SymmetricSecurityProtocolFactory.OnOpen (время ожидания TimeSpan) +15334232
System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen (время ожидания TimeSpan) +23
System.ServiceModel.Channels.CommunicationObject.Open (время ожидания TimeSpan) +563
System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open (TimeSpan timeout) +101
System.ServiceModel.Channels.SecurityChannelListener 1.OnOpen(TimeSpan timeout) +203
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +563
System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) +87
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +563
System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +110
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +563
System.ServiceModel.Security.SecuritySessionSecurityTokenAuthenticator.OnOpen(TimeSpan timeout) +149
System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout) +23
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +563
System.ServiceModel.Security.SecurityUtils.OpenCommunicationObject(ICommunicationObject obj, TimeSpan timeout) +24
System.ServiceModel.Security.SecuritySessionServerSettings.OnOpen(TimeSpan timeout) +878
System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout) +23
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +563
System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open(TimeSpan timeout) +153
System.ServiceModel.Channels.SecurityChannelListener
1.OnOpen (тайм-аут тайм-аута) +203
System.ServiceModel.Channels.CommunicationObject.Open (время ожидания TimeSpan) +563
System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen (время ожидания TimeSpan) +87
System.ServiceModel.Channels.CommunicationObject.Open (время ожидания TimeSpan) +563
System.ServiceModel.ServiceHostBase.OnOpen (время ожидания TimeSpan) +110
System.ServiceModel.Channels.CommunicationObject.Open (время ожидания TimeSpan) +563
System.ServiceModel.HostingManager.ActivateService (String normalizedVirtualPath) +135
System.ServiceModel.HostingManager.EnsureServiceAvailable (String normalizedVirtualPath) + 654
[ServiceActivationException: служба '/AtlasServices/Service.svc' не может быть активирована из-за исключения во время компиляции. Сообщение об исключении: Сертификат 'CN = RPKey' должен иметь закрытый ключ, способный к обмену ключами. Процесс должен иметь права доступа к закрытому ключу ..]System.ServiceModel.AsyncResult.End (результат IAsyncResult) +15700960
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End (результат IAsyncResult) +15623609
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous (контекст HttpApplication, логический flowContext) +265
System.ServiceModel.Activation.HttpModule.ProcessRequest (Отправитель объекта, EventArgs e) +227
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +80
System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно) + 171