小编Nei*_*son的帖子

如何在ASP.Net中发送状态代码500并仍然写入响应?

我有一个ASP.Net单文件Web服务(.ashx包含IHttpHandler实现的文件),它需要能够将错误返回为具有500个内部服务器错误状态代码的响应.这在PHP中是相对简单的事情:

header("HTTP/1.1 500 Internal Server Error");
header("Content-Type: text/plain");
echo "Unable to connect to database on $dbHost";
Run Code Online (Sandbox Code Playgroud)

ASP.Net(C#)等效应该是:

Context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
Context.Response.ContentType = "text/plain";
Context.Response.Write("Unable to connect to database on " + dbHost);
Run Code Online (Sandbox Code Playgroud)

当然,这不能按预期工作; 相反,IIS拦截500状态代码,删除我写入Response对象的任何内容,并发送调试信息或自定义错误页面,具体取决于应用程序的配置方式.

我的问题 - 我怎样才能抑制这种IIS行为并直接从我的IHttpHandler实现中发送错误信息?

这个应用程序是PHP的一个端口; 客户端已经写好了,所以我基本上坚持这个规范.错误地发送200状态代码的错误不适合模具.

理想情况下,我需要以编程方式控制行为,因为这是我们要分发的SDK的一部分,而没有任何" 编辑此文件 "和" 更改此IIS设置 "补充说明.

谢谢!

编辑:已排序.Context.Response.TrySkipIisCustomErrors = true是票.哇.

c# asp.net rest ihttphandler

64
推荐指数
2
解决办法
6万
查看次数

自动分号插入的标准是什么?

可能重复:
Javascript的自动分号插入有哪些规则?

JavaScript因其隐式行终止而迷惑我.它是一种非常类似C的语言,除了分号中的结尾行通常是可选的.

那么它如何决定何时采用行尾?

考虑这个例子:

var x = 1 + 2
-3 + 3 == 0 ? alert('0') : alert('3')
Run Code Online (Sandbox Code Playgroud)

将其打入HTML文件并在Safari中打开它弹出3.如果在第一行的末尾粘贴分号,则会更改为0.

算法和逻辑都很简单; 我感兴趣的是JavaScript决定了什么标准,在这种情况下,不要假设第一行之后的行尾.它是否仅在假设EOL之前等待错误情况?还是有更明确的标准?

我很好奇.我没有研究过这么多; 我想看看S/O社区对此有什么看法.无论如何,我总是用分号结束我的行,但是我有一些JS压缩代码,当我不经意地留下分号时会不时出现分号问题.

编辑

好的只是为了澄清实际问题在这里:任何人都可以用非抽象的术语描述JavaScript何时会自动插入分号.

这不是重复的.我知道自动分号插入的规则已经很好地建立并且简明扼要地记录下来.它们也是长篇大论而且令人困惑,因为它们通常是抽象的.根据我的经验,高级程序员不会消化低级文档以及简单的最终结果,这正是我正在寻找的.

如果没有人感兴趣,那么当我有机会时,我会有机会回答自己.在此期间,请将枪支留在枪套中几天.谢谢.

javascript syntax

1
推荐指数
1
解决办法
1968
查看次数

标签 统计

asp.net ×1

c# ×1

ihttphandler ×1

javascript ×1

rest ×1

syntax ×1