ASP란 무엇입니까?요청에 해당하는 NET Core MVC.요청 URI?
저는 HttpResponseMessage와 같은 익숙한 것들을 ASP로 다시 "sim"하는 방법을 보여주는 블로그 게시물을 찾았습니다.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 프로젝트, 요청을 받을 수 없는 것 같습니다.요청 Uri.
Request를 검사해보니 다음과 같은 기능을 만들 수 있었습니다.
private string UriStr(HttpRequest Request)
{
return Request.Scheme + "://" + Request.Host + Request.Path; // Request.Path has leading /
}
그래서 나는 글을 쓸 수 있었습니다.UriStr(Request)
대신.하지만 그게 맞는지는 잘 모르겠어요.저는 이것을 제대로 사용하지 않고 제 길을 해킹하고 있는 것처럼 느껴집니다.
이전의 비핵심 ASP와 관련된 질문입니다.NET MVC 버전은 사이트의 기본 URL을 가져오는 방법을 묻습니다.
개인적으로 다음을 사용합니다.
new Uri(request.GetDisplayUrl())
GetDisplayUrl
완전히 이스케이프되지 않은 형식(QueryString 제외)GetEncodedUrl
HTTP 헤더에 사용하기에 적합한 완전히 이스케이프된 양식
다음 네임스페이스의 확장 메서드입니다.Microsoft.AspNetCore.Http.Extensions
더 깨끗한 방법은 다음을 사용하는 것입니다.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;
}
(테스트되지 않음, 코드를 몇 가지 조정해야 할 수 있음)
여기 작동 코드가 있습니다.이는 사용자 지정 포트에서 요청이 전송되었을 때 제대로 작동하지 않았던 @Thomas Levesque 응답을 기반으로 합니다.
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;
}
}
언급URL : https://stackoverflow.com/questions/31617345/what-is-the-asp-net-core-mvc-equivalent-to-request-requesturi
'programing' 카테고리의 다른 글
동일한 오리진 정책이 적용되는지 확인합니다. (0) | 2023.08.01 |
---|---|
a.x 삭제 대 a.x = 정의되지 않음 (0) | 2023.08.01 |
Android 카메라에서 서버로 비디오 스트리밍 (0) | 2023.08.01 |
Mysql이 이미 설치된 Centos 6.9에서 MariaDB를 설치하는 동안 충돌 (0) | 2023.08.01 |
database.yml에서 풀 옵션의 용도는 무엇입니까? (0) | 2023.08.01 |