繁体   English   中英

.net 4.0从相同解决方案中的另一个项目中调用Membership validateuser方法,则抛出null

[英].net 4.0 Calling Membership validateuser method from another project in same solution throw null ex

我在同一解决方案中有一个Web服务项目和一个Web项目。

该Web项目实现了成员资格提供程序。

我希望能够通过Web服务项目对用户进行身份验证,但是当我在Web项目中调用此方法时:

public static bool AuthUser(string userName, string password)
        {
            return Membership.ValidateUser(userName, password);
        }

我得到这个内在的恩。 “由于启动用户实例的过程失败,导致无法生成SQL Server用户实例。连接将关闭。”

从web项目中调用该方法可以正常工作。

我明白为什么要得到前任。 但不是解决方法。

更新
我通过删除C:\\ Users \\ JRB \\ AppData \\ Local \\ Microsoft \\ Microsoft SQL Server Data \\ SQLEXPRESS文件夹解决了此问题。

但是,现在该方法始终返回false。似乎几乎没有使用正确的连接字符串。 有什么建议么?

该特定的错误消息有很多可能的原因使其生成。

您可能需要在msdn论坛上查看此线程以获取可能的解决方案。

归结为您正在使用SQL Server Express,并且正在执行Web服务的用户遇到了问题。 我想这个问题可能是它无法将系统数据库复制到本地用户存储文件夹中。 失败的原因似乎是因为您有2个不同的应用程序在同一用户下运行,但很可能部署到了两个不同的IIS位置。 第一个成功复制数据库,第二个失败,因为文件已存在于该位置。

如果是这样,那么您有两种选择。 一种方法是合并Web服务和Web应用程序项目,使它们在同一App实例下运行。 另一个办法是转储SQL Server Express并转移到SQL Server的更集中版本。

第三是将每个应用程序设置为在不同用户下运行:第一个应用程序是ASPNET,而另一个则完全不同。 但是,我认为这不会满足您的要求。

仅供参考-故意不设置SQL Express以处理这种类型的配置。 让我知道我是否做出了一些错误的假设。 我们都知道那是怎么回事。 ;)

WS项目实际上是自己创建了一个空的成员数据库并使用了它,这就是为什么它总是返回false的原因。

为了解决这个问题,我必须复制webprojects web.config成员身份标签并将其添加到WS web.config中,并且连接字符串当然应该相同。

该解决方案感觉有点脏,但它可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM