gpt4 book ai didi

c# - HttpActionContext.Request 没有 CreateResponse 方法

转载 作者:IT王子 更新时间:2023-10-29 04:12:31 27 4
gpt4 key购买 nike

我正在尝试在 ASP.Net Web API 中创建自定义 AuthorizeAttribute 来处理基本身份验证。覆盖 HandleUnauthorizedRequest 时,我发现 HttpActionContext.Request 没有 CreateResponse 方法。

该项目是针对 .net 4.5 的 MVC 4。我使用 nuget 将 Web API 更新到版本 2。


using System;
using System.Net.Http.Headers;
using System.Text;
using System.Threading;
using System.Web.Http;

namespace BasicAuth.Security
{
public class BasicAuthAttribute : AuthorizeAttribute
{
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
if (Thread.CurrentPrincipal.Identity.IsAuthenticated)
{
return;
}

var authHeader = actionContext.Request.Headers.Authorization;
if (authHeader != null)
{
if (authHeader.Scheme.Equals("basic", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(authHeader.Parameter))
{
var credentials = GetCredentials(authHeader);

//Handle authentication

return;
}
}

HandleUnauthorizedRequest(actionContext);
}

private string[] GetCredentials(AuthenticationHeaderValue authHeader)
{
var raw = authHeader.Parameter;
var encoding = Encoding.ASCII;
var credentials = encoding.GetString(Convert.FromBase64String(raw));

return credentials.Split(':');
}

protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
{
actionContext.Response = actionContext.Request. //No CreateResponse Method ?
}
}
}

我确定它一定是某处丢失或不正确的引用,尽管它相当困惑。任何帮助将不胜感激。

谢谢

最佳答案

CreateResponseSystem.Net.Http 命名空间中定义的扩展方法。因此,请确保通过添加正确的 using 指令将其纳入范围:

using System.Net.Http;

关于c# - HttpActionContext.Request 没有 CreateResponse 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21893000/

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