asp.net 身份验证 - 使用 web.config 中的凭据 - 问题
我有一个简单的问题让我头痛了几天。
我创建了带有登录控件的非常简单的应用程序。我将用户数据保存在 web.config 文件中:
<authentication mode="Forms">
<forms name=".RzeskoLoginCookie">
<credentials passwordFormat="Clear">
<user name="test" password="test"/>
</credentials>
</forms>
</authentication>
我将把这个简单的网站部署到我不想使用 SQL Server 的计算机上的 IIS。
我的登录按钮事件如下所示:
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
{
if(FormsAuthentication.Authenticate(Login1.UserName, Login1.Password))
{
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet);
}
}
现在的问题是:
当我在内置网络服务器的 VS2008 上运行网站时,一切正常(我可以登录)。当我将网站复制到 IIS 时,我不断收到这个恼人的错误(在单击“登录”按钮后):
生成用户实例失败 SQL Server 由于失败 检索用户的本地 应用程序数据路径。请使 确保用户有本地用户配置文件 在计算机上。连接将 关闭。
我还观察到在我的 App_Data 文件夹中正在创建一些奇怪的文件。
总结。我想要实现的是使用 web.config 文件中的用户凭据,而不使用 sql server。
我很感激任何帮助
亲切的问候 PK
I have a simple problem which is giving me headaches for a couple of days.
I've created very simple application with login control. I keep user data in web.config file:
<authentication mode="Forms">
<forms name=".RzeskoLoginCookie">
<credentials passwordFormat="Clear">
<user name="test" password="test"/>
</credentials>
</forms>
</authentication>
I will deploy this simple website to IIS on computer on which I do not want to use SQL Server.
My login button event looks like this:
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
{
if(FormsAuthentication.Authenticate(Login1.UserName, Login1.Password))
{
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, Login1.RememberMeSet);
}
}
Now the problem:
When I am running a website on VS2008 built in webserver, everything works fine (I can log in). When I copy my website to IIS I am constantly getting this annoying error (after I click Login button):
Failed to generate a user instance of
SQL Server due to failure in
retrieving the user's local
application data path. Please make
sure the user has a local user profile
on the computer. The connection will
be closed.
I also observed that in my App_Data folder some weird files are being created.
To sum up. What I want to achieve is to use user credentials from web.config file, without using sql server.
I'd appreciate any help
Kind Regards
PK
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从 MSDN 页面登录控制:
*
*
默认的成员资格提供程序是 AspNetSqlProvider,它使用 SQL Server 数据库作为其用户存储。
如果您想提供自定义身份验证例程,您可以编写自己的自定义成员资格提供程序或处理 Login 控件的 OnAuthenticate 方法提供您自己的身份验证逻辑。
From the MSDN page for Login control:
*
*
The default Membership provider is the AspNetSqlProvider which uses a SQL Server database as its user store.
If you want to provide a custom authentication routine, you can either write your own custom Membership provider or handle the OnAuthenticate method of the Login control to provide your own authentication logic.
如果您注意到代码中存在用于处理
控件的 LoggingIn 事件的方法声明:该控件与 ASP.NET 会员资格提供程序交互,这可能就是它寻找的原因连接字符串。
因此,不要使用
控件,只需使用按钮并处理Click
事件,这样就不会使用 Membership:Code Behind(请注意该方法的不同签名):
If you notice in your code, you have the method declaration for handling the
<asp:Login>
control's LoggingIn event:This control interfaces with the ASP.NET Membership provider which is probably why it is looking for a connection string.
So rather than using the
<asp:Login>
control, simply use a button and handle theClick
event so that there is no use of Membership:Code behind (notice the different signature of the method):
好的,谢谢大家指出解决方案。
我最终通过创建自己的身份验证事件(与登录控件关联)设法避免了该错误。
Ok, thanks everybody for pointing out the solution.
I finally managed to avoid that error by creating my own authentication event (associated with the login control).