gpt4 book ai didi

c# - ASP.NET MVC + Silverlight + 表单例份验证

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:08 25 4
gpt4 key购买 nike

所以我试图让一个简单的系统工作,我有一个 asp.net mvc web 应用程序,表单例份验证已经启动并运行并创建了一个用户。我可以使用 mvc Controller / View 毫无问题地登录。

然后我将一个 silverlight 应用程序添加到解决方案中,使用现有的网络应用程序作为主机。我创建了一个支持 silverlight 的 Web 服务并添加了一个具有以下代码的操作契约(Contract):

    [OperationContract]
public bool Authenticate(string username, string password)
{
if (FormsAuthentication.Authenticate(username, password))
{
FormsAuthentication.SetAuthCookie(username, false);
return true;
}
return false;
}

在 silverlight 应用程序中,我添加了两个文本框和一个按钮,以及对 WCF 服务的服务引用。在按钮点击事件中,我有这段代码:

    void login_Click(object sender, RoutedEventArgs e)
{
AuthenticationService.AuthenticationClient client = new AuthenticationClient();
client.AuthenticateCompleted += new EventHandler<AuthenticateCompletedEventArgs>(client_AuthenticateCompleted);
client.AuthenticateAsync(username.Text, password.Text);
}

void client_AuthenticateCompleted(object sender, AuthenticateCompletedEventArgs e)
{
if (e.Result)
{
MessageBox.Show("Success");

}
else
{
MessageBox.Show("Error");
}
}

所以问题是,当我输入我的登录信息并单击按钮时,我得到的只是错误框。我似乎无法通过它来验证用户。

我错过了什么?

更新:这是我在异步完成处理程序中遇到的错误:

行:86错误:Silverlight 应用程序中未处理的错误代码:4004
分类:ManagedRuntimeError
消息:System.NullReferenceException:未将对象引用设置为对象的实例。 在 UserPortal.MainPage.client_AuthenticateCompleted(对象发送者,AuthenticateCompletedEventArgs e) 在 UserPortal.AuthenticationService.AuthenticationClient.OnAuthenticateCompleted(对象状态)

更新 2:所以我在上面发布的错误是因为 e.Error 属性为空。所以我没有从身份验证服务中收到任何特定错误。是否需要在 web.config 中更改某些内容才能使其通过 silverlight 工作?

    <authentication mode="Forms">
<!-- forms loginUrl="~/Account/LogOn" timeout="2880"/ -->
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/"/>
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>

最佳答案

好的,所以我让它工作了,有点。

以下内容here我设法启动并运行了一项服务,使我能够成功登录。问题是我必须将 RequireSSL 更改为 false。我无法让该服务在 https 上运行。

有人知道我需要做什么才能让它在 SSL 上工作吗?我现在正在使用 ASP.NET 开发服务器,我是否需要在此机器上配置真实版本的 IIS 才能正常工作?

关于c# - ASP.NET MVC + Silverlight + 表单例份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1371258/

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