【问题标题】:Membership Provider returning remoteAddress is Null返回 remoteAddress 的 Membership Provider 为 Null
【发布时间】:2013-04-18 11:35:13
【问题描述】:

我们正在使用专有的单点登录服务远程拨打会员电话。我们通过 VPN 连接。

我们在以下位置遇到错误:

Service.Web.Security.Membership.ValidateUser(username, password);

无论 VPN 是否正常工作:

堆栈跟踪:

[ArgumentNullException:值不能为空。 参数名称:remoteAddress] System.ServiceModel.ClientBase`1..ctor(String endpointConfigurationName, String remoteAddress) +3235973 ProprietaryService.Security.Membership.MembershipServiceProxy.ValidateUser(String applicationName, String username, String password, Int32 maxInvalidPasswordAttempts) +231 ProprietaryService.Security.Membership.MembershipProvider.ValidateUser(字符串用户名,字符串密码)+27 System.Web.Security.Membership.ValidateUser(字符串用户名,字符串密码)+26 在 LoginForm.ascx.cs:91 中包含_usercontrols_LoginForm.btnLogin_Click(Object sender, EventArgs e) System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9553178 System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串事件参数)+103 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument)+10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724'

Web.Config的相关区域:

 <system.web>
        <membership defaultProvider="MembershipProvider">
            <providers>
                <clear />
                <add name="MembershipProvider"
                     type="ProprietaryMembershipAPIName1, ProprietaryMembershipAPIName2"
                     connectionStringName="ConnectionStringToRemoteDB1" enablePasswordRetrieval="false" enablePasswordReset="true"
                     requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5"
                     minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
                     applicationName="RemoteAppName" />
            </providers>
        </membership>
    </service.web>
    <system.serviceModel>
        <bindings>
    <netTcpBinding>
                <binding name="MembershipProvider_NetTcpBinding" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
            hostNameComparisonMode="StrongWildcard" listenBacklog="10"
            maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
            maxReceivedMessageSize="65536">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
              enabled="false" />
                    <security mode="None">
                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                        <message clientCredentialType="Windows" />
                    </security>
                </binding>
            </netTcpBinding>
        </bindings>
<client>
            <endpoint address=""
                binding="netTcpBinding" bindingConfiguration="Membership_NetTcpBinding"
                contract="MembershipProviderService.MembershipService" name="Membership_NetTcpBinding" >

            </endpoint>
</client>

我们可以通过 ConnectionStringToRemoteDB1 中的凭据远程访问数据库。我们被告知,“MembershipProviderService.MembershipService”和相关的 API 旨在从数据库中获取远程地址并将其提供给成员资格提供程序。

有没有人看到这里的配置有任何问题,尖叫着说这不起作用? 这感觉就像缺少一个配置块,但是通过 VPN 跨域使用服务使得很难知道问题可能是什么。提前感谢您的任何建议!

【问题讨论】:

    标签: c# wcf client membership provider


    【解决方案1】:

    您遇到的错误是由于您的 web.config 中的这一行:

    <endpoint address=""
    

    在异常情况下,它正试图创建 WCF 客户端:

    System.ServiceModel.ClientBase`1..ctor(String 端点配置名称,字符串远程地址)

    而且你不能传递空/空地址。

    【讨论】:

    • 这是我们向他们提出的要求。我们甚至进入了他们的数据库并找出了会员提供者的 URL。我们尝试将其添加到该端点地址中,以及将服务引用添加到 URL。两者都没有解决问题。此外,当直接请求时,我们被告知环境特定设置来自他们的远程数据库。试图确认缺少“端点地址”是唯一的问题,如果有人发现其中有其他任何问题,请告诉我们。
    • 那么你在填写端点地址时遇到了什么错误?据我了解,您的代码 ProprietaryMembershipAPIName1 远程连接到此端点地址。因为它是空的,所以无法连接
    • 不幸的是,无论我们填写端点地址还是直接连接到 Membership Provider svc URL,都会出现同样的错误。这导致我们推测 API 正在错误地处理远程连接。我们可能忽略了其他任何想法?
    • 相同的堆栈跟踪?尝试调试代码以检查客户端中的参数。
    • 是的。我只是通过在不同条件下对堆栈跟踪的三个复制粘贴文本文件进行文本比较来仔细检查:没有 URL、有 URL、有服务参考。
    猜你喜欢
    • 2010-12-30
    • 2020-12-11
    • 2012-05-02
    • 1970-01-01
    • 2020-11-29
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多