Xin chào Tôi đã thực hiện một dịch vụ WCF được lưu trữ trong dự án Windows Azure dưới dạng WebRole.Vấn đề ràng buộc an ninh WCF
Dịch vụ của tôi được bảo mật bằng chứng chỉ SSL và thao tác này hoạt động.
Bây giờ tôi muốn thêm một số bảo mật thêm vào hợp đồng hoạt động của tôi và nếu tôi làm điều này (thiết lập một mức độ bảo vệ) tôi nhận được lỗi tiếp theo.
Tôi cần phải định cấu hình một số ràng buộc hoặc thứ gì đó khác để có được tác phẩm này nhưng tôi không biết điều gì và tôi không biết ở đâu.
thông tindự án:
Lỗi:
The request message must be protected. This is required by an operation of the contract ('IService1','http://tempuri.org/').
The protection must be provided by the binding ('BasicHttpBinding','http://tempuri.org/').
Kiến trúc
ServiceConfiguration.Cloud.cscfg & ServiceConfiguration.Local.cscfg
<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*">
<Role name="WCFServiceWebRole">
<Instances count="1" />
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
</ConfigurationSettings>
<Certificates>
<Certificate name="Certificate1" thumbprint="51F357715F" thumbprintAlgorithm="sha1" />
</Certificates>
</Role>
</ServiceConfiguration>
ServiceDefinition.csdef
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WCFServiceWebRole" vmsize="ExtraSmall" enableNativeCodeExecution="true">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
<Binding name="Endpoint2" endpointName="Endpoint2" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
<InputEndpoint name="Endpoint2" protocol="https" port="8080" certificate="Certificate1" />
</Endpoints>
<Imports>
<Import moduleName="Diagnostics" />
</Imports>
<LocalResources>
<LocalStorage name="WCFServiceWebRole.svclog" sizeInMB="1000" cleanOnRoleRecycle="false" />
</LocalResources>
<Certificates>
<Certificate name="Certificate1" storeLocation="LocalMachine" storeName="My" />
</Certificates>
</WebRole>
</ServiceDefinition>
Hợp đồng
[DataContract]
public class KlantenContract
{
[DataMember]
public int PARTYID { get; set; }
[DataMember]
public string firstName { get; set; }
[DataMember]
public string lastName { get; set; }
IService1.cs
namespace WCFServiceWebRole
{
[ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
public interface IService1
{
[OperationContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
List<KlantenContract> GetAllKlanten(string firstName);
}
}
Web.config
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="IService1">
<security mode="Transport"></security>
</binding>
<binding name="Certificate1">
<security>
<message clientCredentialType="Certificate"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="Service1" behaviorConfiguration="ServiceBehavior">
<endpoint address="https://127.0.0.1:8080/Service1.svc" binding="wsHttpBinding"
name="Endpoint2" contract="IService1">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceCredentials>
<serviceCertificate findValue="CN=tempCert" />
</serviceCredentials>
</behavior>
<behavior>
<!-- 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="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
Không, tôi vẫn gặp lỗi tương tự, nhưng tôi đoán tôi sai về cấu trúc hoặc cấu hình của mình ?? Bạn có thấy cấu trúc của tôi -> ảnh chụp màn hình cuối cùng không. sao tôi phải cấu hình ràng buộc trong web.config hoặc trong cấu hình dự án Azure? – dg90
Trong web.config của bạn. Tôi sẽ có một cái nhìn khi tôi có thời gian và sau đó lấy lại cho bạn. –
Cảm ơn bạn sẽ rất tuyệt, tôi đã gắn rất nhiều thứ nhưng nó luôn luôn ném lỗi tương tự như anh ấy không lấy cấu hình của tôi hoặc tôi đang định cấu hình sai.; – dg90