gpt4 book ai didi

wcf - WCF 中的 ASP.Net 成员资格提供程序 (WebHttpBinding)

转载 作者:行者123 更新时间:2023-12-04 20:07:24 26 4
gpt4 key购买 nike

我正在开发 WPF 需要认证的应用程序。我想用客户端应用服务使用 ASP.Net 成员(member)提供商 (如果您不知道我在说什么,请参阅此 link)。实际上,我基于 MembershipProvider 制作了自己的提供程序。它与 ASP.Net 项目完美配合。

但是现在,我不想再将我的身份验证托管在 ASP.Net 项目中,而是要托管在 WCF 中。

所以,我做了一个 WCF服务并使用了 WebHttpBinding .一切正常,直到登录。毫无疑问,该调用是对服务进行的,但没有任何 react 。事实上,这就像电话已经发出但没有被送达。
我可以确认这一点,因为我使用服务跟踪查看器将所有消息记录到服务中。

最终,我收到消息超时:

The incoming HTTP request's URI 'http://localhost:21200/Authentication_JSON_AppService.axd/Login' does not match any service operation.



这就像提供者没有接听电话或接听电话一样。我真的不知道去哪里看。我已经完成了我的研究,但我没有找到类似的例子。这是我的设置:

1. 成员(member)提供者的配置文件 (在 ASP.NET 项目中工作)
<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>

2.我的应用程序的配置文件,服务部分 (如果我使用 ASP.NET 项目就可以工作)
<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>

3.我的应用程序的配置文件,服务的部分调用 (如果我使用 ASP.NET 项目就可以工作)
<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>

如果有人能给我一些提示在哪里看,将不胜感激。谢谢。

最佳答案

您可以尝试的一件事是使用 https。

在这种情况下,您将通过网络以明文形式发送密码。有时这项技术会救你,因为如果你尝试它是行不通的。

我不确定这里是否是这种情况,但由于只是登录不起作用,因此值得一试。

关于wcf - WCF 中的 ASP.Net 成员资格提供程序 (WebHttpBinding),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1690800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com