首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尼尼姆拦截WCF服务

尼尼姆拦截WCF服务
EN

Stack Overflow用户
提问于 2014-09-04 10:05:37
回答 1查看 226关注 0票数 0

我是这方面的新手,所以我会尽我所能把这件事说清楚.

我创建了一个WcfModule,在其中加载以下包:

代码语言:javascript
运行
复制
Bind<IDistributorService>().To<DistributorService>().InRequestScope().Intercept().With<ExceptionInterceptor>();

起初,我没有收到任何错误,但我在函数中添加了一个InterceptAttribute:

代码语言:javascript
运行
复制
[AttributeUsage(AttributeTargets.Method)]
public sealed class HandleExceptionsAttribute : InterceptAttribute
{
    public override IInterceptor CreateInterceptor(IProxyRequest request)
    {
        return request.Kernel.Get<ExceptionInterceptor>();
    }
}

[HandleExceptions]
public virtual Result<List<DistributorDataContract>> GetDistributor(string id)
{
   //...code...

我在这个函数中得到一个错误:(方法中的第一行)

代码语言:javascript
运行
复制
private ServiceHost CreateNewServiceHost(Type serviceType, Uri[] baseAddresses, WebHttpBehavior webBehavior, WebHttpBinding webHttpBinding)
{
  var host = base.CreateServiceHost(serviceType, baseAddresses);
  //...
}

有错误:

InvalidProxyConstructorArgumentsException未被用户代码处理,无法实例化类的代理: My.Namespace.DistributorService。找不到无参数构造函数。

有谁知道问题可能是什么吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-09-06 13:25:39

当城堡核心动态代理被指示创建一个“类代理”时,这个异常会被抛出,这个类代理没有无参数的(默认)构造函数,也没有构造函数--参数被传递给城堡(参见来源)。

我的最佳猜测是,当您通过属性使用ninject侦听时,ninject将指示卡斯尔核心创建一个类代理,不管您的绑定是Bind<IFoo>().To<Foo>()还是Bind<Foo>().ToSelf()

然而,不能解析和传递所有所需的构造函数参数,这似乎有点奇怪。

DistributorService的实现是什么,包含CreateNewServiceHost的类的基类的实现是什么

解决办法:当然,切换到Intercept().With<TInterceptor>()语法也可能使您能够使用拦截(参见http://codepyre.com/2010/03/using-ninject-extensions-interception-part-2-working-with-interceptors/)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25662664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档