使用Service Moniker的经典ASP到WCF

时间:2009-09-18 18:29:04

标签: wcf asp-classic windows-server-2003

我试图从经典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服务。

如果这属于服务器故障,则主持人可以移动它。我也有帐户。

1 个答案:

答案 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网站的电话有关。一个开始的地方是,您的事件日志中是否有任何错误。