C#学习教程:什么是ASP.NET Core MVC等同于Request.RequestURI?分享


什么是ASP.NET Core MVC等同于Request.RequestURI?

我发现了一篇博文 ,展示了如何将熟悉的东西(如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 Core MVC项目中,我似乎无法获得Request.RequestUri。

我尝试检查Request,我能够创建这样的函数:

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

所以我可以改写UriStr(Request) 。 但我不确定这是对的。 我觉得我正在乱砍,并没有正确使用它。

早期非核心ASP.NET MVC版本的相关问题询问如何获取站点的基本URL。

UriBuilder方法是使用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; } 

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

就个人而言,我使用:

 new Uri(request.GetDisplayUrl()) 

GetDisplayUrl是以下命名空间中的扩展方法:Microsoft.AspNetCore.Http.Extensions

这是一个有效的代码。 这是基于@Thomas Levesque的答案,当请求来自自定义端口时,该答案无效。

上述就是C#学习教程:什么是ASP.NET Core MVC等同于Request.RequestURI?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 public static class HttpRequestExtensions { public static Uri ToUri(this HttpRequest request) { var hostComponents = request.Host.ToUriComponent().Split(':'); var builder = new UriBuilder { Scheme = request.Scheme, Host = hostComponents[0], Path = request.Path, Query = request.QueryString.ToUriComponent() }; if (hostComponents.Length == 2) { builder.Port = Convert.ToInt32(hostComponents[1]); } return builder.Uri; } } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031806.html

发表评论

邮箱地址不会被公开。 必填项已用*标注