【问题标题】:Securing an ADO.net WCF data service with ASP.NET Membership使用 ASP.NET 成员身份保护 ADO.net WCF 数据服务
【发布时间】:2011-04-28 09:56:22
【问题描述】:

嗨,

我正在使用 WCF DataServices,我正在尝试使用 asp.net 成员身份来保护它

这是我的代码,

<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>

我收到以下错误:

无法加载操作“ProcessRequestForMessage”,因为它具有 System.ServiceModel.Channels.Message 类型的参数或返回类型,或者具有 MessageContractAttribute 和其他不同类型参数的类型。使用 System.ServiceModel.Channels.Message 或带有 MessageContractAttribute 的类型时,该方法不得使用任何其他类型的参数。

【问题讨论】:

  • 您可以发布您的消息代码吗?看来你需要把它全部放在你的消息对象中。而不是 Method(RequestMessage request, OtherType type, string str, int value) 你应该只有 Method(RequestMessage request) 并且 RequestMessage 类型只有你需要的方法参数。

标签: c# .net asp.net wcf wcf-data-services


【解决方案1】:

你可以试试这个,如果这和你的代码差不多:

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)

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 2011-01-31
    • 2010-11-20
    • 2016-04-21
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多