Tôi đang cố tạo dịch vụ WCF sử dụng số MembershipProvider
để xác thực. Bởi vì nó là một dịch vụ nội bộ Tôi hiện không quan tâm đến việc áp dụng bảo mật mức vận tải (HTTPS) và tôi muốn (hiện tại) thực hiện việc này mà không cần giấy chứng nhận. Bên cạnh đó, điều này sẽ phức tạp tung ra các dịch vụ và tôi muốn làm điều này tại một thời điểm sau đó trong thời gian. Tôi đã xây dựng một cấu hình cơ bản (thậm chí không có cấu hình MembershipProvider
, nhưng WCF giữ ném cho tôi những ngoại lệ sau đây:.WCF: Chứng chỉ dịch vụ không được cung cấp. Chỉ định chứng chỉ dịch vụ trong ServiceCredentials
Giấy chứng nhận dịch vụ không được cung cấp Chỉ định một giấy chứng nhận dịch vụ trong ServiceCredentials
. Dưới đây là cấu hình của tôi:
<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>
stackTrace của ngoại lệ:
[InvalidOperationException: Chứng chỉ dịch vụ không được cung cấp. Chỉ định chứng chỉ dịch vụ trong ServiceCredentials. ]
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateServerX509TokenProvider() 12.382.737 System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateLocalSecurityTokenProvider (RecipientServiceModelSecurityTokenRequirement recipientRequirement) +63
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateSecurityTokenProvider (SecurityTokenRequirement yêu cầu) + 48
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateTlsnegoServerX509TokenProvider (RecipientServiceModelSecurityTokenRequirement recipientRequirement) +191
System.ServiceModel.Securit y.ServiceCredentialsSecurityTokenManager.CreateTlsnegoSecurityTokenAuthenticator (RecipientServiceModelSecurityTokenRequirement recipientRequirement, Boolean requireClientCertificate, SecurityTokenResolver & sctResolver) 683
System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateSecurityTokenAuthenticator (SecurityTokenRequirement tokenRequirement, SecurityTokenResolver & outOfBandTokenResolver) 12.383.208 System.ServiceModel.Security.SessionRenewSecurityTokenManager .CreateSecurityTokenAuthenticator (SecurityTokenRequirement tokenRequirement, SecurityTokenResolver & outOfBandTokenResolver) +81
System.S erviceModel.Security.SymmetricSecurityProtocolFactory.OnOpen (TimeSpan timeout) 181
System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen (TimeSpan timeout) 21
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan timeout) 318
System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open (TimeSpan timeout) +94
System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen (TimeSpan timeout) 240
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan thời gian ut) +318
System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen (TimeSpan timeout) 72[InvalidOperationException: Các ChannelDispatcher tại 'http: // localhost: 9800/Service1.svc' với hợp đồng (s) 'IssueAndRenewSession "' là không thể mở IChannelListener của nó. ]
System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen (TimeSpan timeout) 118
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan timeout) 318 System.ServiceModel.ServiceHostBase.OnOpen (TimeSpan timeout) + 111
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan timeout) 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.OnOpen (TimeSpan timeout) 21
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan timeout) 318
System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open ( timeout TimeSpan) 148
System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen (TimeSpan timeout) 240
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan timeout) 318
System.ServiceModel.Dispatcher.ChannelDispatcher .OnOpen (TimeSpan timeout) 72[InvalidOperationException: Các ChannelDispatcher tại 'http: // localhost: 9800/Service1.svc' với hợp đồng (s) 'IService1 "' là không thể mở IChannelListener của nó.]
System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen (TimeSpan timeout) 118
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan timeout) 318 System.ServiceModel.ServiceHostBase.OnOpen (TimeSpan timeout) 111
System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan timeout) +318
System.ServiceModel.HostingManager.ActivateService (String normalizedVirtualPath) 206
System.ServiceModel.HostingManager.EnsureServiceAvailable (String normalizedVirtualPath) 651[ServiceActivationException: Dịch vụ '/Service1.svc' không thể được kích hoạt do một ngoại lệ trong quá trình biên dịch. Các thông báo ngoại lệ là: ChannelDispatcher tại 'http: // localhost: 9800/Service1.svc' với hợp đồng (s) '"IService1"' là không thể mở IChannelListener của nó ..]
System.Runtime.AsyncResult .End (IAsyncResult kết quả) 688.590
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End (IAsyncResult kết quả) 190
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous (HttpApplication bối cảnh, String routeServiceVirtualPath, Boolean flowContext, Boolean ensureWFService) +234
System.ServiceModel.Activation.HttpModule.ProcessRequest (Object sender, EventArgs e) 359
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 148 System.Web. HttpApplication.ExecuteStep (bước IExecutionStep, Boolean & comp letedSynchronously) +75
Điều gì xảy ra với cấu hình của tôi và cách tôi có thể giải quyết vấn đề này?
[Bài đăng trên blog này] (http://webservices20.blogspot.nl/2008/11/introducing-wcf-clearusernamebinding.html) cung cấp câu trả lời. –
Xem http://webservices20.blogspot.nl/2008/11/introducing-wcf-clearusernamebinding.html – Steven
Tôi đoán bạn không muốn tắt hoàn toàn bảo mật (tạm thời tất nhiên)? Nếu bạn làm như vậy, bạn sẽ vô hiệu hóa bảo mật thư trên liên kết wshttp của bạn như sau: '' –