【发布时间】: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