我创建了一个权限属性,并在我的BLL中编写的方法中使用它。它工作正常,如果我需要调试好。但是当我在WCF layer
中使用相同的属性时,只需停止工作。没有给出任何错误,但没有检查权限,也没有调试。代码只是忽略了属性。
为了简单起见我使用这种方法
我的WCF方法调用与WCF方法在同一个类中定义的另一个方法,并且子方法调用BLL,并且此子方法上有Permission属性。
但没用。请指导。
答案 0 :(得分:3)
PostSharp是构建过程的一部分。我怀疑包含您的WCF服务的库不运行PostSharp后编译过程,该过程将属性代码与您自己的属性代码交织在一起。如果不是你的断点......等等。对于PostSharp代码将无法正常工作。
通常,后编译过程由驻留在开发PC上的系统托盘中的后台应用程序完成。但它可以被禁用。我不知道你是如何编译WCF服务库的。
您可以手动将PostSharp添加到项目中:
引用PostSharp文档:
使用文本编辑器打开项目文件(csproj,vbproj,...)。如果您的项目是在Visual Studio中加载的,请打开解决方案资源管理器,右键单击项目名称,单击卸载项目,然后再次右键单击同一项目并单击编辑。
找到文件末尾附近的元素。例如,C#2.0项目应以与此类似的元素结束:
< Import Project =“$(MSBuildBinPath)\ Microsoft.CSharp.targets”/>
在导入行之前,插入以下文字:
<&的PropertyGroup GT;< DontImportPostSharp>真< / DontImportPostSharp>< /&的PropertyGroup GT;
在 C#/ VB导入行之后,插入以下文字:
< Import Project =“.... \ Third Party \ PostSharp 2.0 \ PostSharp.targets”/>
保存文件并重新加载项目。
编译。
如果您正在调用BLL程序集中的方法,请检查PostSharp后编译过程是否也正确运行。
答案 1 :(得分:0)
我不知道PostSharp但是:
我的第一步是反射PostSharp编织IL以查看生成的代码。看起来不错吗?
我假设该方面查看了一些安全上下文信息。如果上下文无效,您是否在忽略处理的方面有保护代码? Persmission属性是否在不告诉您的情况下处理此问题。
换句话说,Permission属性是否设计用于WCF请求端点?