2014-11-24 58 views
2

我有一个带有地址和参数仅公开一个WebInvoked操作这样的自承载WCF服务:WCF自定义错误页时,自托管的服务(没有IIS)

www.myserver.com/myservice/SayHello?LuckeyNumber=3 (where LuckeyNumber : int) 

现在,当有人试图要访问此地址,但LuckeyNumber=EvilInput我得到一个WCF错误页面,我想用页面替换(类似于Twitter失败鲸鱼)。

  1. 如何取代此页?
  2. 我可以替换404s,405s等的页面吗?

谢谢!

+0

可能与此SO问题有关: http://stackoverflow.com/questions/10600874/customize-wcf-rest-error-responses – Felix 2014-11-24 15:25:51

+0

为什么服务需要返回一个人类可读的错误页面?你不需要只是返回一个错误或500错误? – Remotec 2014-12-05 08:44:33

+0

@RemotecUk: 1.对于大多数情况,我们不。我们有一个端点返回HTML,我们希望有一个自定义的错误页面。 2.我们的大多数服务都是JSON,并且故障被序列化为SOAP-Faults。 3.现成的WCF返回一个我们想要控制的HTML人类可读响应。 – Felix 2014-12-07 17:17:15

回答

0

对于自托管的WCF,如果您托管REST服务,则可以添加WebHttpBehavior以获得HELP页面,但是您肯定可以在服务响应中发送Fault Exception详细信息(而不是整个html页面)。

使用这些服务的应用程序应负责在错误页面中显示故障详细信息。

您应该始终将该决定留给消费者(而不是服务层)来掩盖这些数据并根据需要显示/记录。

+1

由于在渗透测试期间检测到此消息,因此将消费者的决定留给消费者是不可取的,并且服务器有两件事情是不能成立的:(1)服务器在故障异常中包含堆栈跟踪,允许攻击者反向设计一些我们服务器的结构,并(2)返回字符串'EvilInput'。如果字符串是''script lang ='javascript'> LaunchZeMissiles()'它会被执行(一个XSS)。 – Felix 2015-02-05 15:46:36