我经常搜索一个很好的答案,但得到了许多不满足我的答案.
我们有通常运营的服务.在每个操作中,我们调用一个不同的项目来处理te操作并在数据库中存储一些操作信息.
我们有了新的要求:将操作的soap消息也存储在数据库中.是否可以从wcf操作中接收soap(xml)?还是真的需要活动?
我无法使用,OperationContext.Current.RequestContext.RequestMessage.ToString()因为它将请求转换为 Xml。当请求是 JSON 时,我希望它保持这种状态。我还发现,当端点的方法被调用时,Request.InputStream它是空的——即使我<add key="wcf:serviceHostingEnvironment:useClassicReadEntityBodyMode" value="true" />在 web.config 中(仅供参考:应用程序正在运行 .Net 4.5.2)。
所以,我所做的就是在 Global.asax.cs 中实现Application_BeginRequest。我提取其中的内容Request.InputStream,并将该请求正文保存到Context.Items. 稍后,在IErrorHandlers中ProvideFault(...),我将保存的字符串传输到异常的Data属性,以便日志记录稍后在运行时捕获它HandleError(...)(运行Items时为空HandleError)。
对于我自己,我找到了这个解决方案来获取框架 4.5 中的原始肥皂消息:
OperationContext.Current.RequestContext.RequestMessage.ToString()
Run Code Online (Sandbox Code Playgroud)
阅读上面的所有评论,了解有关替代方案及其问题的更多详细信息。
| 归档时间: |
|
| 查看次数: |
3105 次 |
| 最近记录: |