将 Post Sharp 与 WCF 配合使用
本文关键字:WCF Post Sharp | 更新日期: 2023-09-27 18:36:28
我创建了一个权限属性,并在用我的BLL编写的方法中使用它。它工作正常,如果需要,可以很好地调试。但是当我在WCF layer
中使用相同的属性时,它就会停止工作。没有给出任何错误,但权限尚未检查,也没有调试。代码只是忽略该属性。
为了使事情变得简单,我使用这种方法
我的 WCF 方法调用与 WCF 方法在同一类中定义的另一个方法,并且该子方法调用 BL,并且此子方法具有权限属性。
但是没有用。请指导。
PostSharp是构建过程的一部分。我怀疑包含您的 WCF 服务的库没有运行 PostSharp 编译后过程,该过程将属性代码与您自己的代码交织在一起。如果它不是您的断点...等,因为PostSharp代码将不起作用。
通常,编译后过程由驻留在开发电脑上系统托盘中的后台应用程序完成。但是,可以禁用它。我不知道您是如何编译 WCF 服务库的。
您可以手动将 PostSharp 添加到您的项目中:
- 手动将 PostSharp 添加到您的项目中
引用PostSharp文档:
-
打开项目文件(csproj、vbproj、...) 使用文本编辑器。如果项目是在 Visual Studio 中加载的,请打开"解决方案资源管理器",右键单击项目名称,单击"卸载项目",然后再次右键单击同一项目并单击"编辑"。
-
找到靠近文件末尾的元素。例如,C# 2.0 项目应以类似于以下内容的元素结尾:
-
在导入行之前,插入以下文本:
True
-
在 C#/VB 导入行之后,插入以下文本:
-
保存文件并重新加载项目。
-
编译。
如果要从 BLL 程序集调用方法,请检查 PostSharp 后编译过程是否也正确运行。
我不知道PostSharp,但是:
我的第一步是反射PostSharp编织的IL,看看生成了什么代码。看起来对吗?
我假设该方面查看一些安全上下文信息。在上下文无效时忽略处理的方面是否有保护代码?Persmission属性是否在不告诉您的情况下处理此问题。
换句话说,权限属性是否旨在与 WCF 请求终结点一起使用?