WCF中的ASP.Net成员资格提供程序(WebHttpBinding)
我正在开发一个需要身份验证的WPF应用程序。我想使用客户端应用程序服务来使用ASP.Net成员资格提供程序(如果你不知道我在说什么,请看这个)。事实上,我根据会员资格提供商创建了自己的提供商。它与ASP.Net projet完美配合 但是现在,我不希望我的身份验证被托管在ASP.Net projet中,而是在WCF中 所以,我做了一个WCF服务,并使用了一个WebHttpBinding。在登录之前,一切正常。电话是打给服务的,毫无疑问,但什么也没发生。事实上,这就像电话已经打了,但是没有人接。 我可以确认它,因为我使用了服务跟踪查看器来记录服务的所有消息 最后,我收到一条超时消息: 传入HTTP请求的URI“”与任何服务操作都不匹配WCF中的ASP.Net成员资格提供程序(WebHttpBinding),wcf,web-services,asp.net-membership,wcf-binding,Wcf,Web Services,Asp.net Membership,Wcf Binding,我正在开发一个需要身份验证的WPF应用程序。我想使用客户端应用程序服务来使用ASP.Net成员资格提供程序(如果你不知道我在说什么,请看这个)。事实上,我根据会员资格提供商创建了自己的提供商。它与ASP.Net projet完美配合 但是现在,我不希望我的身份验证被托管在ASP.Net projet中,而是在WCF中 所以,我做了一个WCF服务,并使用了一个WebHttpBinding。在登录之前,一切正常。电话是打给服务的,毫无疑问,但什么也没发生。事实上,这就像电话已经打了,但是没有人接。
这就像服务提供商没有接听或接听电话一样。我真的不知道该去哪里找。我做过研究,但没有找到类似的例子。以下是我的设置: 1。成员资格提供程序的配置文件(在ASP.NET项目中工作)
2。我的应用程序的配置文件,服务部分(如果我使用ASP.NET项目,则工作)
3。我的应用程序的配置文件,服务的部分调用(如果我使用ASP.NET项目,则工作)
如果有人能给我一些提示去哪里看,我将不胜感激。谢谢。您可以尝试使用https 在这种情况下,您将通过网络以明文形式发送密码。有时,这项技术会拯救你,因为如果你尝试,它将不起作用 我不确定这里是否是这种情况,但因为只有登录不起作用,所以值得一试。也许这会有帮助:
好的,谢谢,我试试看。如果它能正常工作,我会感到惊讶,因为对于一个经典的ASP.Net项目,它不需要它。好的,我尝试了一个wsHttpBinding,我需要一个我没有的证书。还有其他想法吗?wshttpbinding与https不同。您可以使用IIS工具创建自发布的certificate@ShirazBhaiji请你回答好吗?谢谢你的帮助,但没用。无论如何,我们改变了对身份验证方法的想法。
<system.web.extensions>
<scripting>
<webServices>
<authenticationService enabled="true" />
<roleService enabled="true" />
</webServices>
</scripting>
</system.web.extensions>
<system.web>
<authentication mode="Forms" />
<authorization>
<allow users="*"/>
</authorization>
<membership defaultProvider="FooMembershipProvider">
<providers>
<add name="FooMembershipProvider" type="Foo.Web.Security.FooMembershipProvider, Foo.Web" />
</providers>
</membership>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<behaviors>
<endpointBehaviors>
<behavior name="WebBehavior">
<webHttp />
<enableWebScript />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="WebBehavior">
<serviceMetadata httpGetEnabled="true" httpGetUrl="" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="basicHttpMode">
<security mode="None" />
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="webHttpMode">
<security mode="None" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="WebBehavior"
name="Foo.Security.Business.Manager.Wcf.Host.SecurityManager">
<endpoint address=""
binding="webHttpBinding"
contract="Foo.Security.Business.Contract.ISecurityContract"
behaviorConfiguration="WebBehavior"
bindingConfiguration="webHttpMode" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:21200" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
serviceUri="http://localhost:21200/Authentication_JSON_AppService.axd"
credentialsProvider="Foo.Windows.LoginWindow, Foo.Windows" />
<add name="FooMembershipProvider"
type="Foo.Security.Business.Provider.FooMembershipProvider, Foo.Security.Business"
serviceUri="http://localhost:21200/Authentication_JSON_AppService.axd"
credentialsProvider="Foo.Windows.LoginWindow, Foo.Windows" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider"
type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
serviceUri="http://localhost:21200/Role_JSON_AppService.axd"
cacheTimeout="86400" />
</providers>
</roleManager>