将 Post Sharp 与 WCF 配合使用

本文关键字:WCF Post Sharp | 更新日期: 2023-09-27 18:36:28

我创建了一个权限属性,并在用我的BLL编写的方法中使用它。它工作正常,如果需要,可以很好地调试。但是当我在WCF layer中使用相同的属性时,它就会停止工作。没有给出任何错误,但权限尚未检查,也没有调试。代码只是忽略该属性。

为了使事情变得简单,我使用这种方法

我的 WCF 方法调用与 WCF 方法在同一类中定义的另一个方法,并且该子方法调用 BL,并且此子方法具有权限属性。

但是没有用。请指导。

将 Post Sharp 与 WCF 配合使用

PostSharp是构建过程的一部分。我怀疑包含您的 WCF 服务的库没有运行 PostSharp 编译后过程,该过程将属性代码与您自己的代码交织在一起。如果它不是您的断点...等,因为PostSharp代码将不起作用。

通常,编译后过程由驻留在开发电脑上系统托盘中的后台应用程序完成。但是,可以禁用它。我不知道您是如何编译 WCF 服务库的。

您可以手动将 PostSharp 添加到您的项目中:

  • 手动将 PostSharp 添加到您的项目中

引用PostSharp文档:

  1. 打开项目文件(csproj、vbproj、...) 使用文本编辑器。如果项目是在 Visual Studio 中加载的,请打开"解决方案资源管理器",右键单击项目名称,单击"卸载项目",然后再次右键单击同一项目并单击"编辑"。

  2. 找到靠近文件末尾的元素。例如,C# 2.0 项目应以类似于以下内容的元素结尾:

  3. 导入行之前,插入以下文本:

    True

  4. C#/VB 导入行之后,插入以下文本:

  5. 保存文件并重新加载项目。

  6. 编译。

如果要从 BLL 程序集调用方法,请检查 PostSharp 后编译过程是否也正确运行。

我不知道PostSharp,但是:

我的第一步是反射PostSharp编织的IL,看看生成了什么代码。看起来对吗?

我假设该方面查看一些安全上下文信息。在上下文无效时忽略处理的方面是否有保护代码?Persmission属性是否在不告诉您的情况下处理此问题。

换句话说,权限属性是否旨在与 WCF 请求终结点一起使用?