asp.net-mvc-3 – PrepareResponse().AsActionResult()抛出不支
发布时间:2020-12-16 07:04:17 所属栏目:asp.Net 来源:网络整理
导读:目前我正在使用DotNetOpenAuth CTP版本开发OAuth2授权服务器.我的授权服务器在asp.net MVC3中,它基于库提供的示例.一切正常,直到应用程序达到用户授权消费者客户端的程度. 我的OAuth控制器中有一个操作,它负责授权过程,与示例中的等效操作非常相似: [Author
|
目前我正在使用DotNetOpenAuth CTP版本开发OAuth2授权服务器.我的授权服务器在asp.net MVC3中,它基于库提供的示例.一切正常,直到应用程序达到用户授权消费者客户端的程度.
我的OAuth控制器中有一个操作,它负责授权过程,与示例中的等效操作非常相似: [Authorize,HttpPost,ValidateAntiForgeryToken]
public ActionResult AuthorizeResponse(bool isApproved)
{
var pendingRequest = this.authorizationServer.ReadAuthorizationRequest();
if (pendingRequest == null)
{
throw new HttpException((int)HttpStatusCode.BadRequest,"Missing authorization request.");
}
IDirectedProtocolMessage response;
if (isApproved)
{
var client = MvcApplication.DataContext.Clients.First(c => c.ClientIdentifier == pendingRequest.ClientIdentifier);
client.ClientAuthorizations.Add(
new ClientAuthorization
{
Scope = OAuthUtilities.JoinScopes(pendingRequest.Scope),User = MvcApplication.LoggedInUser,CreatedOn = DateTime.UtcNow,});
MvcApplication.DataContext.SaveChanges();
response = this.authorizationServer.PrepareApproveAuthorizationRequest(pendingRequest,User.Identity.Name);
}
else
{
response = this.authorizationServer.PrepareRejectAuthorizationRequest(pendingRequest);
}
return this.authorizationServer.Channel.PrepareResponse(response).AsActionResult();
}
每次程序到达此行: this.authorizationServer.Channel.PrepareResponse(response).AsActionResult(); 该系统引发了一个异常,我研究过但没有成功.例外情况如下: 堆栈跟踪:http://pastebin.com/TibCax2t 我与样本做的唯一不同的是我使用了实体框架的代码第一种方法,我认为样本是使用自动生成实体的设计器完成的. 先感谢您. 解决方法
如果你从这个例子开始,安德鲁所讨论的问题仍然存在于DatabaseKeyNonceStore.cs中.这两种方法之一引发了异常:
public CryptoKey GetKey(string bucket,string handle) {
// It is critical that this lookup be case-sensitive,which can only be configured at the database.
var matches = from key in MvcApplication.DataContext.SymmetricCryptoKeys
where key.Bucket == bucket && key.Handle == handle
select new CryptoKey(key.Secret,key.ExpiresUtc.AsUtc());
return matches.FirstOrDefault();
}
public IEnumerable<KeyValuePair<string,CryptoKey>> GetKeys(string bucket) {
return from key in MvcApplication.DataContext.SymmetricCryptoKeys
where key.Bucket == bucket
orderby key.ExpiresUtc descending
select new KeyValuePair<string,CryptoKey>(key.Handle,new CryptoKey(key.Secret,key.ExpiresUtc.AsUtc()));
}
我已经解决了在查询之外移动初始化的问题: public CryptoKey GetKey(string bucket,which can only be configured at the database.
var matches = from key in db.SymmetricCryptoKeys
where key.Bucket == bucket && key.Handle == handle
select key;
var match = matches.FirstOrDefault();
CryptoKey ck = new CryptoKey(match.Secret,match.ExpiresUtc.AsUtc());
return ck;
}
public IEnumerable<KeyValuePair<string,CryptoKey>> GetKeys(string bucket) {
var matches = from key in db.SymmetricCryptoKeys
where key.Bucket == bucket
orderby key.ExpiresUtc descending
select key;
List<KeyValuePair<string,CryptoKey>> en = new List<KeyValuePair<string,CryptoKey>>();
foreach (var key in matches)
en.Add(new KeyValuePair<string,key.ExpiresUtc.AsUtc())));
return en.AsEnumerable<KeyValuePair<string,CryptoKey>>();
}
我不确定这是最好的方法,但它确实有效! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET相当于PHP的$_GET和$_POST?
- asp.net-mvc – jQuery.POST – 使用Form.Serialize()传递另
- Modular Web Application with ASP.NET Core
- 如何利用ASP.net IIS 7.5中的浏览器缓存
- 获取在asp.net中单击错误页面的页面的URL
- asp.net-mvc – ASP.NET成员资格替代方案
- 为什么asp.net OnTextChanged不工作
- asp.net – 如何通过代码显示无
- asp.net – 如何在网站项目中使用发布配置文件(.pubxml)时设
- asp.net-mvc – MVC控制器操作参数为null
推荐文章
站长推荐
- asp.net-mvc – 使用JSON返回Razor局部视图(ASP
- asp.net-mvc – 具有IE条件注释的MVC4捆绑/缩小
- asp.net-mvc – Asp.Net MVC Html助手扩展
- asp.net – 动态地将用户控件添加到转发器
- 经过一段时间的工作,IIS / ASP.Net无法从WCF Web
- 如何避免异常捕获.NET中的复制粘贴
- asp.net-core – dnx和dnu没有在Ubuntu 15.10上运
- asp.net – 如何使用WebClient访问ASMX Web服务?
- 使用.NET Core+Docker 开发微服务
- WiX(Votive)项目参考收获(HEAT)ASP.Net Web应用程
热点阅读
