此问题仅与ASP.NET Forms Authentication without Redirect有关,但我无法使其工作。 MVC 2改变了它的脚本文件和他们现在得到了为这里列出:使用ASP.Net MVC进行Ajax登录2
http://www.asp.net/ajaxlibrary/CDNAjax4.ashx
现在我只是在黑暗中,但试错的拍摄已经收窄我到包括
MicrosoftAjax.js
MicrosoftAjaxCore.js
MicrosoftAjaxComponentModel.js
MicrosoftAjaxSerialization.js
MicrosoftAjaxNetwork.js
微软AjaxWebServices.js
MicrosoftAjaxApplicationServices.debug.js
的问题是我现在得到的JavaScript例外:
微软JScript运行时错误:Sys.InvalidOperationException:到Web服务的路径尚未确定。
从谷歌上搜索周围,我发现这条道路应该是“〜/ ScriptServices_AuthenticationService.asmx”,但做这样的事情:
Sys.Services._AuthenticationService.DefaultWebServicePath = "~/ScriptServices_AuthenticationService.asmx";
不工作(我假定这是一个私有成员)。所以,这个问题,有没有人知道如何获得ajax/async FormsAuth的工作?有什么js文件各种MS ajax服务依赖的权威性指南?最后,如果以上都不是,是否有办法在服务器端执行FormsAuth,使其不重定向(这样我就可以用ajax形式调用控制器动作)? ...我尝试使用FormsAuthentication.SetAuthCookie(),但似乎并没有为我工作。
编辑: 我发现FormsAuthentication.SetAuthCookie()实际上正在工作,但它需要关闭响应流(当然,当缓冲区被发送并且cookie被设置时)。这对我来说不起作用,因为这对我来说太迟了。
编辑: 我正在尝试的完整描述可能是必要的。我有一个Ajax表单用于创建一个新帐户。在服务器端,我创建了帐户和登录名。在前端,我等待ajax完成事件,然后将我的注册向导表单提交到下一个页面,该页面将介绍其他注册步骤。在伪代码中,控制器动作的样子:
public JsonResult CreateAsync(LoginForm form)
{
CreateAccount(form);
FormsAuthentication.RedirectFromLoginPage(form.Email, false);
return Json(
new
{
Email = form.Email,
Name = form.Name,
Message = "Success"
});
}
用于登录该方法结束响应流,然后将客户端Ajax被混淆。我已经尝试过FormsAuth.SetAuthCookie,但遇到了上述问题。
似乎他们已经在发布.NET 4/VS2010和ajax-libraries时对Sys.Services命名空间做了重大更改......无法自己弄清楚... – 2010-08-09 21:26:20