我正在尝试使用VirtualPathUtility.ToAbsolute解决应用程序相对路径,例如~/MyPage.aspx,应用程序绝对路径,例如/MySite/MyApp/MyPage.aspx.但是,对于某些路径,我收到一条HttpException说法,即我的路径"不是有效的虚拟路径".例子:
// This works:
var abs1 = VirtualPathUtility.ToAbsolute("~/MyPage.aspx#anchor");
// This errors:
var abs2 = VirtualPathUtility.ToAbsolute("~/MyPage.aspx?key=value");
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
因此,我使用 ValidationPipe 来验证 NestJS 中的 DTO,如下所示:
// auth.dto.ts
export class AuthDto {
@IsEmail()
@IsNotEmpty()
email: string;
}
Run Code Online (Sandbox Code Playgroud)
如果没有异常过滤器,错误消息将按预期工作。我将电子邮件字段留空,然后收到一系列错误消息:
// Response - Message array, but no wrapper
{
"statusCode": 400,
"message": [
"email should not be empty",
"email must be an email"
],
"error": "Bad Request"
}
Run Code Online (Sandbox Code Playgroud)
完美的。现在我想为错误消息实现一个包装器,因此我创建一个新的过滤器并将其添加到引导程序中:
// main.ts
async function bootstrap() {
// ...
app.useGlobalFilters(new GlobalExceptionFilter());
}
bootstrap();
Run Code Online (Sandbox Code Playgroud)
// global-exception.filter.ts
import {
ArgumentsHost,
Catch,
ExceptionFilter,
HttpException,
HttpStatus,
} from '@nestjs/common';
import { Response } from 'express';
import { IncomingMessage …Run Code Online (Sandbox Code Playgroud) 看来,例如,当我们传输文件时用户关闭窗口时,可能会抛出此HttpException(0x80072746 - 远程主机关闭连接).即使我们以较小的块发送文件并检查客户端是否仍然连接,仍然可能发生异常.我们希望能够捕获这个特定的异常,忽略它.
HttpException中提供的ErrorCode是一个Int32 - 太小而无法容纳0x80072746,那么我们在哪里可以找到这个数字?
我有时在output.aspx页面中出现以下错误:
异常详细信息:System.Web.HttpException:请求超时.
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[HttpException(0x80004005):请求超时.]
抓住这个例外是一个好主意吗?我在哪里这样做,因为我的output.aspx.cs有一个Page_Load,该函数调用RunTable().我应该在功能内容周围放置一个try catch块吗?
我的问题如下:
throw new HttpException(422, "some message") 在控制器中不起作用.
然而,throw new HttpException(404, "some message")作品,以及400(等)
为什么我不能HttpException使用422 HTTP状态代码?
当我尝试时,我得到一个[200]响应与以下调试信息:
致命错误:在供应商\ symfony\src\Symfony\Component\HttpKernel\Debug\ErrorHandler.php中的消息'注意:未定义偏移量:422 in app\cache\dev\classes.php第3079行' 未捕获异常'ErrorException' 67
(!)ErrorException:注意:未定义的偏移量:第67行的vendor\symfony\src\Symfony\Component\HttpKernel\Debug\ErrorHandler.php中的app\cache\dev\classes.php第3079行中的422
(如果它重要的话我使用FOSRESTBundle ......当然我清除了缓存)
我有一个 NestJS 控制器: search.controller.ts
import { Body, Controller, Post, Req, UseFilters } from '@nestjs/common';
import { HttpExceptionFilter } from '../exception/http-exception.filter';
import { SearchData } from './models/search-data.model';
import { SearchResults } from 'interfaces';
import { SearchService } from './search.service';
@Controller('')
@UseFilters(HttpExceptionFilter)
export class SearchController {
constructor(private searchService: SearchService) {}
@Post('api/search')
async searchDataById(
@Body() searchData: SearchData,
@Req() req
): Promise<SearchResults> {
return await this.searchService.getSearchResultsById(
searchData,
token
);
}
}
Run Code Online (Sandbox Code Playgroud)
此搜索控制器使用名为HttpExceptionFilter的过滤器。每当抛出HttpException时就会触发此过滤器。我创建了ServiceException,它扩展了HttpException。每当出现错误时,我都会抛出 new ServiceException() 。 …
**main.py:**
def bucket_exists(bucket_name):
try:
something()
except ClientError as error:
error_code = int(error.response['Error']['Code'])
if error_code == 403:
raise HTTPException(status_code=403, detail=f"Private Bucket. Forbidden Access!")
elif error_code == 404:
raise HTTPException(status_code=404, detail=f"Bucket Does Not Exist!")
return flag
**test_main.py:**
def test_bucket_exists(mock_s3_bucket):
resp = fetch_data.bucket_exists('abc123')
assert resp == {"detail":"Bucket Does Not Exist!"}
Run Code Online (Sandbox Code Playgroud)
我的测试失败并出现错误:fastapi.exceptions.HTTPException
请帮助处理 pytest 中已知的 httpException。我读过其他帖子,但与我的测试用例无关
在 Laravel 7 中,这段代码工作正常。usingrenderable方法也适用于 laravel 8。但我不确定如何在创建CustomException类后在 laravel 8 中注册它。
public function render($request, Exception $exception)
{
if ($exception instanceof ValidationException) {
if ($request->expectsJson()) {
return response('Sorry, validation failed.', 422);
}
}
return parent::render($request, $exception);
}
Run Code Online (Sandbox Code Playgroud) 当我使用下面的代码时,出现HttpStatusCodeException异常的情况是什么?
ResponseEntity<Object> response =
restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, entity, Object.class);
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙吗????????
c# ×3
asp.net ×2
exception ×2
nestjs ×2
node.js ×2
typescript ×2
.net ×1
.net-3.5 ×1
ihttphandler ×1
java ×1
javascript ×1
laravel ×1
laravel-8 ×1
pytest ×1
python ×1
rest ×1
spring ×1
symfony ×1
system.web ×1