我找到了一个blog post,它展示了如何将类似于HttpResponseMessage的熟悉信息"填充"回ASP.NET Core MVC,但我想知道,在控制器的REST Post方法中执行以下代码的新原生方式是什么:

// POST audit/values
[HttpPost]
public System.Net.Http.HttpResponseMessage Post([FromBody]string value)
{
    var NewEntity = _repository.InsertFromString(value);

    var msg = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.Created);
    msg.Headers.Location = new Uri(Request.RequestUri + NewEntity.ID.ToString());
    return msg;

}

在ASP.NET核心MVC项目,我似乎无法获得请求.请求URI.

我try 了判断请求,我能够实现如下功能:

private string UriStr(HttpRequest Request)
{
    return Request.Scheme + "://" + Request.Host + Request.Path; // Request.Path has leading /
}

所以我可以写UriStr(Request).但我不确定这是否正确.我觉得我在胡乱操作,没有正确地使用它.

对于早期的非核心ASP.NET MVC版本询问如何获取网站的基本url.

推荐答案

更干净的方法是使用UriBuilder:

private static Uri GetUri(HttpRequest request)
{
    var builder = new UriBuilder();
    builder.Scheme = request.Scheme;
    builder.Host = request.Host.Value;
    builder.Path = request.Path;
    builder.Query = request.QueryString.ToUriComponent();
    return builder.Uri;
}

(未经测试,代码可能需要一些调整)

Asp.net相关问答推荐

如何正确配置 IHttpModule?

HttpResponse 的区别:SetCookie、AppendCookie、Cookies.Add

如何通过 Asp.net 中的命令参数传递多个值?

ASP.NET - AppDomain.CurrentDomain.GetAssemblies() - AppDomain 重新启动后缺少程序集

Directory.Exists 不适用于网络路径

如何使用 ASP.NET Identity 创建用户并获取新创建的 ID

如何从 web.config 中读取系统值并在 ASP.NET MVC C# 方法中使用

在 cookie 中存储多个值

最佳服务器端 .NET PDF 编辑库

ASP.NET vNext 与主机无关,这意味着什么?

如何从 Asp.net Mvc-3 发送邮箱?

DBContext.Entry 有什么作用?

如何确定服务器端 C# 上的浏览​​器窗口大小

等价于 ASP.NET Core 中的 Html.RenderAction

aspnet_compiler 发现错误版本的 System.Web.WebPages 1.0.0.0 而不是 2.0.0.0

Azure Functions 中的 DI

无法在 IIS 中启动网站 - W3SVC 正在运行

如何在服务器控件属性中使用 ASP.NET <%= 标签?

如何修复 ASP.NET 错误文件 'nnn.aspx' 尚未预编译,无法请求.?

中继器中的中继器