Sil*_* Me 13 .net c# wcf .net-4.0
我正在尝试创建一个使用MembershipProvider
for身份验证的WCF服务.因为它是一个内部服务,我目前对应用传输级别安全性(HTTPS)不感兴趣,我想(现在)在没有证书的情况下这样做.此外,这将使推出服务变得复杂,我希望稍后这样做.我已经构建了一个基本配置(即使没有配置MembershipProvider
,但WCF一直在向我抛出以下异常:
未提供服务证书.在ServiceCredentials中指定服务证书.
这是我的配置:
<system.serviceModel>
<bindings>
<ws2007HttpBinding>
<binding name="Service1WS2007HttpBindingConfig">
<security mode="Message">
<transport clientCredentialType="None" />
<message clientCredentialType="UserName" />
</security>
</binding>
</ws2007HttpBinding>
</bindings>
<services>
<service name="WcfService1.Service1">
<endpoint address="http://localhost:9800/Service1.svc"
binding="ws2007HttpBinding"
bindingConfiguration="Service1WS2007HttpBindingConfig"
contract="WcfService1.IService1" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false">
<serviceActivations>
<add relativeAddress="Service1.svc" service="WcfService1.Service1" />
</serviceActivations>
</serviceHostingEnvironment>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
Stacktrace异常:
[InvalidOperationException:未提供服务证书.在ServiceCredentials中指定服务证书.]
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateServerX509TokenProvider()+ 12382737 System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateLocalSecurityTokenProvider(RecipientServiceModelSecurityTokenRequirement recipientRequirement)+63
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateSecurityTokenProvider(SecurityTokenRequirement requirement)+48
System.ServiceModel.Security. ServiceCredentialsSecurityTokenManager.CreateTlsnegoServerX509TokenProvider(RecipientServiceModelSecurityTokenRequirement recipientRequirement)191
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateTlsnegoSecurityTokenAuthenticator(RecipientServiceModelSecurityTokenRequirement recipientRequirement,布尔requireClientCertificate,SecurityTokenResolver&sctResolver)683
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateSecurityTokenAuthenticator(SecurityTokenRequirement tokenRequirement,西沽 rityTokenResolver&outOfBandTokenResolver)12383208 System.ServiceModel.Security.SessionRenewSecurityTokenManager.CreateSecurityTokenAuthenticator(SecurityTokenRequirement tokenRequirement,SecurityTokenResolver&outOfBandTokenResolver)81
System.ServiceModel.Security.SymmetricSecurityProtocolFactory.OnOpen(时间跨度超时)181
System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(时间跨度超时)21
System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时)318
System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open(时间跨度超时)94
System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen(时间跨度超时)240
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)+318
System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)+72[InvalidOperationException异常:在'://本地主机:HTTP 9800/Service1.svc'的ChannelDispatcher.合同(S) ' "IssueAndRenewSession"'是不能打开其IChannelListener]
System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(时间跨度超时) 118
System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时)318 System.ServiceModel.ServiceHostBase.OnOpen(时间跨度超时)111
System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时)318
System.ServiceModel.Security .SecuritySessionSecurityTokenAuthenticator.OnOpen(TimeSpan timeout)+131
System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout)+21
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)+318
System.ServiceModel.Security.CommunicationObjectSecurityTokenAuthenticator.Open( TimeSpan timeout)+20
System.ServiceModel.Security.SecuritySessionServerSettings.OnOpen(TimeSpan timeout)+792
System.ServiceModel.Security.WrapperSecurityCommunicationObject.On 开放(时间跨度超时)21
System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时)318
System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open(时间跨度超时)148
System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen(时间跨度timeout)+240
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)+318
System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)+72[InvalidOperationException:'http:// localhost:9800/Service1.svc'中的ChannelDispatcher与合同'"IService1"'无法打开其IChannelListener.]
System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) 118
System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时)318 System.ServiceModel.ServiceHostBase.OnOpen(时间跨度超时)111
System.ServiceModel.Channels.CommunicationObject.Open(时间跨度超时)318
System.ServiceModel.HostingManager .ActivateService(String normalizedVirtualPath)+206
System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)+651[ServiceActivationException:由于编译期间发生异常,无法激活服务'/Service1.svc'.异常消息是:'http:// localhost:9800/Service1.svc'的ChannelDispatcher与合同'"IService1"'无法打开其IChannelListener ..]
System.Runtime.AsyncResult.End(IAsyncResult结果) )+688590
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)+190
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context,String routeServiceVirtualPath,Boolean flowContext,Boolean ensureWFService)+234
System.ServiceModel.Activation.HttpModule.的ProcessRequest(对象发件人,EventArgs的)359
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()148 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔逻辑completedSynchronously)75
我的配置有什么问题,我该如何解决?
79E*_*796 18
您需要使用证书签署服务.您可以通过在配置中添加以下内容来执行此操作:
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
*<serviceCredentials>
<serviceCertificate findValue="certificatename" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
</serviceCredentials>*
</behavior>
</serviceBehaviors>
Run Code Online (Sandbox Code Playgroud)
certificatename是证书的名称.要创建证书,您可以在此处查看: 创建自签名证书
归档时间: |
|
查看次数: |
23878 次 |
最近记录: |