【发布时间】:2019-04-27 09:38:08
【问题描述】:
我正在尝试发送一个包含字符串的 PUT 请求。
请求从 Angular 中的客户端发送到作为 ASP.NET Core 控制器的服务器。请求头是text/plain。
要让 ASP.NET Core 接受 text/plain,我必须遵循 this 教程,该教程只有在我使用 Postman 发送请求时才有效:
当我尝试从客户端向服务器发送相同的请求时它不起作用,请求不是事件触发来自RawRequestBodyFormatter 类的制动点。
角度服务:
export class LendedBookService {
private baseUrl: string;
constructor(private httpClient: HttpClient) {
this.baseUrl = 'http://localhost:55152/';
}
public sendReminder(lendedBookId: string): Observable<any> {
var headers = new HttpHeaders({'Content-Type': 'text/plain; charset=utf-8'});
return this.httpClient.put<string>(this.baseUrl + 'api/lendedBook/sendReminder', lendedBookId, {
headers: headers
});
}
}
ASP.NET Core 控制器:
[Route("api/[controller]/[action]")]
[ApiController]
public class LendedBookController : ControllerBase
{
private readonly Libranian libranian;
public LendedBookController(Libranian libranian)
{
this.libranian = libranian;
}
[HttpPut]
public async Task<IAsyncResult> SendReminder([FromBody]string lendedBookId)
{
using (var unitOfWork = UnitOfWorkLocator.GetUnitOfWork())
{
if (await libranian.NotifyToReturnLend(new Guid(lendedBookId)))
{
return Task.Run(() => NoContent());
}
return Task.Run(() => StatusCode(500));
}
}
}
在这种情况下,我应该怎么做或者我做错了什么发送text/plain 请求?
谢谢!
【问题讨论】:
-
控制台有错误吗? API调用后
-
@PrashantPimpale 不。 Fiddler 也没有找到请求。
-
网络标签中的任何内容?
-
我建议将其设为 JSON 而不是纯文本,这样在维护和更改方面会更好
-
ASP.NET 字符串中的@PrashantPimpale 不能作为
application/JSON发送。
标签: angular asp.net-core httprequest