繁体   English   中英

获取IIS中托管的服务版本

[英]Get the version of Service hosted in IIS

我们在IIS中托管WCF服务。 为了进行跟踪,我们需要知道IIS中托管的服务的版本。

该服务是服务套件的一部分,因此我们实现了所有通用功能(就像在公共库中提到的跟踪服务一样)

当尝试使用常规调用获取Assembly版本时,Assembly.GetExecutingAssembly()

  • Assembly.GetExecutingAssembly():获取公共库的版本
  • Assembly.GetEntryAssembly():null
  • Assembly.GetCallingAssembly():获取公共库的版本

我还尝试获取调用堆栈并获取最后一个(获取IIS版本)。

有谁知道如何以编程方式获取IIS中托管的WCF服务的版本?

我假设您需要从运行时WCF服务引用的公共库dll中获取WCF服务的版本。 如果没有,我不明白为什么您会通过运行Assembly.GetExecutingAssembly()获得公共库程序集。

如果真是这样,那么您想找到包含IIS正在运行的Application对象的Application集。 通过在该根Application对象上使用标准反射方法,您应该获得对IIS正在执行的dll的引用,该DLL应该是WCF服务。

Application类的文档:

http://msdn.microsoft.com/en-us/library/ms525360(v=vs.90).aspx

这看起来是一种有前途的方法:

http://msdn.microsoft.com/en-us/library/system.windows.application.current(v=vs.110).aspx

在谈论WCF服务的版本时,您很可能会意识到您想要Web服务的版本控制,而不是程序集版本,尽管您在问题中混合了两者。

程序集版本包含实现详细信息,没有合法的情况需要通过Web服务或IIS公开此类实现详细信息。 IIS本身具有部署详细信息,与Web服务的版本无关。

System.Windows.Application是WPF的,与WCF或Web服务无关。

当您学习编程时,很可能是一旦接口发布后就学到的,尽管可以更改实现或引入新版本的接口,但切勿更改它。 Web服务基本上是通过http绑定的API或接口,而描述语言通常是SOAP基本Web服务的WSDL。

简而言之,Web服务的版本控制是通过Xml名称空间完成的,在.NET中,您可以在XML名称空间和CLR名称空间之间建立映射。 在部署期间,主机中可以托管同一服务的多个版本,因此旧客户端可以使用旧服务,而新客户端可以使用新版本。 因此,您将拥有无缝的过渡策略。

程序集版本和服务版本之间没有直接链接,并且您不应该公开程序集版本,因为客户端说PHP或Java客户端不知道什么是程序集版本。

有关起点的更多详细信息,如果您使用Google“ Web服务版本控制”,则这里有一些不错的链接: http : //www.ibm.com/developerworks/webservices/library/ws-version/ http://www.oracle。 com / technetwork / articles / web-services-versioning-094384.html http://msdn.microsoft.com/zh-CN/library/ms731060(v=vs.110).aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM