我正在创建一个ServiceFactory来控制通过IIS 7暴露的服务的内部化.
但是我对ServiceHost的行为感到惊讶.虽然我有0个服务配置文件,但无论我在哪里初始化一个新的ServiceHost,如下所示:
var host = new ServiceHost(typeof(MyService), baseAddresses);
Run Code Online (Sandbox Code Playgroud)
接下来,我只想在构建处于调试模式时添加一些行为:
#if DEBUG
host.Description.Behaviors.Add(new ServiceDebugBehavior());
#endif
Run Code Online (Sandbox Code Playgroud)
但是,此代码失败导致ServiceDebugBehavior已应用!尽管我没有配置文件,并且没有应用于服务类的属性,但主机已经具有此行为并且还应用了5个!
这是预期的行为吗?如果我想在发布版本上禁用ServiceDebugBehavior怎么办?
提前致谢,
不容易 - 没有设置我知道只是关闭它.问题确实是:你从中得到了什么好处?
从我看来,大多数这些行为都非常重要 - 身份验证和服务凭据等等.如果它们默认存在,即使没有配置,我也会相信它们是有原因的.
但是,如果你真的想要,你可以随时创建自己的CustomServiceHost
,并在课堂上做任何你喜欢的事情 - 包括抛弃所有预先定义的行为,如果你愿意的话.
如果您想要启用IncludeExceptionDetailsInFaults
服务的服务调试行为设置,请尝试以下类型的代码:
ServiceDebugBehavior behavior =
host.Description.Behaviors.Find<ServiceDebugBehavior>();
if(behavior != null)
{
behavior.IncludeExceptionDetailInFaults = true;
}
else
{
host.Description.Behaviors.Add(
new ServiceDebugBehavior() { IncludeExceptionDetailInFaults = true });
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果ServiceDebugBehavior
已经存在,则找到它并将该属性设置为true - 否则您将创建并添加新属性ServiceDebugBehavior
.我觉得很容易.
归档时间: |
|
查看次数: |
2876 次 |
最近记录: |