首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在asp HttpResponse vNext中修改vNext对象上的原因短语

无法在asp HttpResponse vNext中修改vNext对象上的原因短语
EN

Stack Overflow用户
提问于 2015-11-13 14:40:34
回答 2查看 2.7K关注 0票数 3

我必须在我的asp 5中间件中设置原因短语,而不仅仅是http响应消息的状态代码,但我找不到任何方法。StatusCode类的Microsoft.AspNet.Http.HttpResponse属性是只用于修改状态代码的int属性,而不是原因文本。

我理解,原因是根据状态代码自动设置的,但在我的示例中,我必须将其设置为自定义值。根据HTTP RFC 2616的说法,这是可以的

。。这里列出的词组只是建议--它们可以在不影响协议的情况下被本地对等词所取代。。。

我目前正在使用beta-8版本的asp 5框架。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-24 15:03:03

你可以试试:

代码语言:javascript
复制
Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = "some reason";

返回原因的HttpStatusCodeResult可能如下所示:

代码语言:javascript
复制
public class BadRequestResult : HttpStatusCodeResult
{
    private readonly string _reason;

    public BadRequestResult(string reason) : base(400)
    {
        _reason = reason;
    }

    public override void ExecuteResult(ActionContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException(nameof(context));
        }

        context.HttpContext.Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = _reason;
        context.HttpContext.Response.StatusCode = StatusCode;
    }
}
票数 5
EN

Stack Overflow用户

发布于 2015-11-13 15:04:47

尝尝这个

代码语言:javascript
复制
public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Title = "Home Page";

        return View();
    }

    public ActionResult TestError() // id = error code 
    {
        return new HttpStatusCodeResult(301, "Your custom error text");
    }
}

现在检查http://localhost:33470/home/Testerror

看看费德勒

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33695224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档