Никак. На то это и внутренняя ошибка, что клиенту ничего про нее знать не нужно. В браузере вы можете что-то видеть только если сервер запущен с тестовой конфигурацией (когда в случае ошибки отображает страницу со стектрейсом).
UPD
нужное вам поведение можно получить как-то так:
[ApiController]
public class TestController : ControllerBase
{
[HttpGet]
public Task ChangeStatus()
{
throw new Exception("My test exception");
}
}
public class HttpResponseExceptionFilter : IActionFilter, IOrderedFilter
{
public void OnActionExecuted(ActionExecutedContext context)
{
if (context.Exception != null)
{
context.Result = new ObjectResult(new
{
ErrorText = context.Exception.Message,
Stacktrace = context.Exception.StackTrace
})
{ StatusCode = (int)HttpStatusCode.BadRequest };
context.Exception = null;
return;
}
}
тогда дергнув контроллера вы обратно получите 400ую ошибку с контентом
{
"errorText": "My test exception",
"stacktrace": "stacktrace was here"
}
UPD2:
ну и насколько я помню (а я могу быть не прав, но не могу перепроверить сейчас) - HttpWebRequest будет кидать ексепшн для всех не 200 хттп статусов. Потому возможно стектрейс прийдется доставать не очень красиво
WebRequest request = ...;
try
{
using var response = request.GetResponse();
...
}
catch (WebException e)
{
using var webResponse = (HttpWebResponse)e.Response;
var code = webResponse.StatusCode;
var body = ...;
//...
}
или использовть HttpClient, который ексепшн кидает только если попросить