简体   繁体   English

使用 ASP.NET 成员身份保护 ADO.net WCF 数据服务

[英]Securing an ADO.net WCF data service with ASP.NET Membership

HI,你好,

I am using WCF DataServices, i am trying to securing it using asp.net membership我正在使用 WCF DataServices,我正在尝试使用 asp.net 成员资格来保护它

here is my code,这是我的代码,

<system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="SecureWSBindingWithMembershipConfig" >
          <security mode="TransportWithMessageCredential">
            <transport clientCredentialType="None" />
            <message clientCredentialType="UserName"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="SecureServiceWithMembershipBehavior">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceAuthorization principalPermissionMode="UseAspNetRoles" roleProviderName="AspNetSqlRoleProvider" />
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="AspNetSqlMembershipProvider" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="DataService.WcfDataService" behaviorConfiguration="SecureServiceWithMembershipBehavior">
        <endpoint address="WcfDataService.svc" binding="wsHttpBinding" contract="System.Data.Services.IRequestHandler" bindingConfiguration="SecureWSBindingWithMembershipConfig" >
          <!--<identity>
              <dns value="" />
          </identity>-->
        </endpoint>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>

I am getting following error:我收到以下错误:

The operation 'ProcessRequestForMessage' could not be loaded because it has a parameter or return type of type System.ServiceModel.Channels.Message or a type that has MessageContractAttribute and other parameters of different types.无法加载操作“ProcessRequestForMessage”,因为它具有 System.ServiceModel.Channels.Message 类型的参数或返回类型,或者具有 MessageContractAttribute 和其他不同类型参数的类型。 When using System.ServiceModel.Channels.Message or types with MessageContractAttribute, the method must not use any other types of parameters.当使用 System.ServiceModel.Channels.Message 或带有 MessageContractAttribute 的类型时,该方法不得使用任何其他类型的参数。

You can try this, if this is almost like your code:你可以试试这个,如果这几乎就像你的代码:

Method(RequestMessage request, OtherType value)

// Your message contract much like this.
[MessageContract]
public class RequestMessage {
     [MessageBodyMember]
     public OtherType { get; set; }
}

// And your new method will be
Method(RequestMessage request)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM