我试图从经典ASP中使用WCF日志记录服务而不部署Com包装器。我找到了这样做的方法here。这是vb脚本,简化。
Dim addr
addr = "service:mexAddress=""net.pipe://localhost/Services/Logging/LoggingManager/Mex""," _
& "address=""net.pipe://localhost/Services/Logging/LoggingManager/classic/""," _
& "contract=""ILoggingManagerClassic"", contractNamespace=""http://Services.Logging.Classic/""," _
& "binding=""NetNamedPipeBinding_ILoggingManagerClassic"", bindingNamespace=""http://Services.Logging.Classic/"""
set objErrorLogger = GetObject(addr)
Dim strError : strError = objErrorLogger.LogError("blahblah")
此适用于Server 2008 ,但在Server 2003 上出现错误时失败。
Failed to do mex retrieval:Metadata contains a reference that cannot be resolved: net.pipe://localhost/Services/Logging/LoggingManager/Mex..
只有在通过ASP运行时才会失败,使用相同代码的同一台计算机上的示例VBS文件才能正常工作。
我认为这可能与许可相关,但不知道从哪里开始。有人有什么想法吗?
编辑 - 让我澄清一下,WCF主机是作为网络服务运行的Windows服务。
如果这属于服务器故障,则主持人可以移动它。我也有帐户。
答案 0 :(得分:0)
您正在使用带有网络管道绑定的WCF。
Windows 2003不支持网络管道。
更新
WCF网络管道使用Windows 2008中包含的Windows激活服务(WAS)
http://msdn.microsoft.com/en-us/magazine/cc163357.aspx
网络管道适用于Windows 2003,但不适用于WCF网络管道
编辑
您的评论是正确的,当您将WCF作为Windows服务而不是在IIS中运行时,它应该在winows 2003上运行。
话虽如此,它必须与来自ASP网站的电话有关。一个开始的地方是,您的事件日志中是否有任何错误。