1

我正在学习使用 vs2010 和 .NET4 的 ASP.NET MVC —— 不用于生产用途,仅供我个人使用。

我创建了一个默认的 ASP.NET MVC,它带有预先存在的主页、关于页面以及登录和注册页面。在尝试使用现有的登录和注册页面时,我(没有 SQL 服务器)用 MySQL.Web.Security 的 Connector/NET 中的 MySQLMembershipProvider 替换了 SQLMembershipProvider。

然而,这并没有立即奏效,除了人们似乎在自动生成模式时遇到的常见问题(通过谷歌搜索解决)之外,我还注意到了另外两个问题。

第一个是如果未设置或仅作为空字符串,PasswordStrengthRegularExpression 将在 MySQLMembershipProvider 中导致 Null 异常。我通过修改提供程序代码来修复问题发生的“if”语句来解决这个问题。(如果我记得,它只是检查字符串是否为空,它没有检查字符串是否为空)

第二个是 MySQLMembershipProvider 有一个 Initialize 方法,从基类重写,必须在提供程序的每个实例化时调用。此方法仅在第一次实例化时被调用,但之后不会再次调用(通过单步执行代码和使用断点来确定)。提供程序似乎在每次页面加载时被实例化一次。

我的解决方案(不是最好的)是修改 MySQLMembershipProvider 以创建静态变量来存储对 Initialize 的调用的参数和一个变量来存储对象是否已初始化。然后,我在所有其他方法的开头调用 Initialize 方法。如果对象已经初始化,则 Initialize 方法已修改为立即返回。

我的查询是这样的: MySQLMembershipProvider 是否有缺陷,因此我所描述的问题是错误,还是我误解了某些东西并且没有正确使用 MySQLMembershipProvider?

NB 如果您想查看代码,请告诉我其中 90% 的代码是自动生成的或可从 mysql 开发站点作为源代码获得。有很多。

4

0 回答 0