是否有.net相当于Java初始化Servlet?

时间:2010-11-09 16:47:09

标签: .net wcf servicebehavior endpointbehavior

是否存在.net等效的Java初始化Servlet?

虽然我们正在使用它,相当于过滤器?

最后,如果说存在(过滤器)可以在向WCF服务发出请求之前/之后运行吗?

2 个答案:

答案 0 :(得分:1)

好吧,我不知道java框架,但从它的声音中你可能正在寻找Global.asax HttpApplication.Application_OnStart事件进行初始化。

过滤器?试试IHttpModule

答案 1 :(得分:1)

While you can use the OnStart event of HttpApplication to intercept when the service starts as well as IHttpModule for intercepting requests 是在WCF中执行这些拦截的正确方法。

推荐的唯一原因是因为您在IIS中托管并使用特定于IIS的挂钩。但是,WCF服务可以托管在任何地方,您可能会发现将服务移动到服务进程,以及更改绑定(例如,您可能使用net-tcp而不是http,在这种情况下,您将如何使用阅读通过IHttpModule实现进入的内容?你不能)这会导致这些钩子中断。

也就是说,理想情况下,在创建ServiceHost实例之前,您将执行任何类型的初始化。但是,由于您无权访问IIS中的WCF中的ServiceHost实例,因此您必须实现自定义ServiceHostFactoryspecify that factory in your svc file (see the section titled Using a Custom ServiceHost in IIS or WAS).采用此方法将使其可移植。

对于拦截呼叫,您可以在客户端和服务端执行此操作。在客户端,您将实现IClientMessageInspector,并在服务器端实现IDispatchMessageInspector(我假设您需要后者)。

为了在服务端“注入”此检查器,您必须使用端点行为(适用于服务上的特定端点,IEndpointBehavior的实现)或服务行为(适用于服务上的所有端点,通过IServiceBehavior interface)的实现。

通过这些实现,您可以查看ServiceEndpoint(针对端点行为)或ServiceDescription类来应用检查器的实现,或者WCF中可用的任何其他挂钩。

您可以阅读Paolo Pialorsi's "Writing a WCF Message Inspector",了解如何将所有内容整合在一起,并让您深入了解WCF中的自定义行为。

相关问题