使用Post Sharp和WCF

时间:2012-06-08 06:21:55

标签: c# wcf custom-attributes postsharp

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

为了简单起见我使用这种方法

我的WCF方法调用与WCF方法在同一个类中定义的另一个方法,并且子方法调用BLL,并且此子方法上有Permission属性。

但没用。请指导。

2 个答案:

答案 0 :(得分:3)

PostSharp是构建过程的一部分。我怀疑包含您的WCF服务的库不运行PostSharp后编译过程,该过程将属性代码与您自己的属性代码交织在一起。如果不是你的断点......等等。对于PostSharp代码将无法正常工作。

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

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

引用PostSharp文档:

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

  2. 找到文件末尾附近的元素。例如,C#2.0项目应以与此类似的元素结束:

    < Import Project =“$(MSBuildBinPath)\ Microsoft.CSharp.targets”/>

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

    <&的PropertyGroup GT;< DontImportPostSharp>真< / DontImportPostSharp>< /&的PropertyGroup GT;

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

    < Import Project =“.... \ Third Party \ PostSharp 2.0 \ PostSharp.targets”/>

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

  6. 编译。

  7. 如果您正在调用BLL程序集中的方法,请检查PostSharp后编译过程是否也正确运行。

答案 1 :(得分:0)

我不知道PostSharp但是:

我的第一步是反射PostSharp编织IL以查看生成的代码。看起来不错吗?

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

换句话说,Permission属性是否设计用于WCF请求端点?