【发布时间】:2011-01-25 16:54:00
【问题描述】:
拥有托管在 IIS 中的 WCF 服务,并且我想验证配置设置是否有效,例如日志目录存在或可以创建。如果配置失败,我想认为服务无效,并通过事件日志等通知。理想情况下,如果无效,服务将不可用。
如果我作为 Windows 服务进行托管,我可以轻松地做到这一点。但托管在 IIS 中?我不知道从代码中使服务不可用的好方法。
有什么想法吗?如果有帮助,WCF 服务将在其自己的应用程序池中运行。
TIA! 詹姆斯
【问题讨论】:
拥有托管在 IIS 中的 WCF 服务,并且我想验证配置设置是否有效,例如日志目录存在或可以创建。如果配置失败,我想认为服务无效,并通过事件日志等通知。理想情况下,如果无效,服务将不可用。
如果我作为 Windows 服务进行托管,我可以轻松地做到这一点。但托管在 IIS 中?我不知道从代码中使服务不可用的好方法。
有什么想法吗?如果有帮助,WCF 服务将在其自己的应用程序池中运行。
TIA! 詹姆斯
【问题讨论】:
如果您抛出异常,服务将不可用。所以在你的服务的构造函数中做你的检查,如果一切都是完美的,如果它没有抛出异常并且服务将不存在。如果远程错误关闭,则浏览服务将显示错误和堆栈跟踪。
【讨论】:
其他海报建议从您的服务的构造函数中抛出。这种方法可以正常工作,但可能更好的方法是实现自定义 ServiceHostFactory (http://msdn.microsoft.com/en-us/library/aa702697.aspx) 并在 CreateServiceHost 方法中进行验证。这样做的好处是您的验证错误将成为“无法激活服务”错误报告和 HTML 页面的一部分。
【讨论】:
在服务中有一个名为 test 的私有方法,如果 logging 目录不存在或无法创建等,它将返回布尔值 false。
从服务的构造函数调用这个测试方法。如果该方法返回 false,则发送服务已关闭的明确信息。
【讨论】: