2009-09-18 65 views
2

我試圖從傳統的ASP使用WCF日誌服務而不部署一個Com包裝器。我找到了這樣做的方法here。這裏是vb腳本,簡化了。經典的ASP到使用服務名字對象的WCF

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的,但失敗,服務器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

serverfault.com上的傢伙擅長這個東西。 – 2009-09-18 18:32:07

回答

0

您正在使用WCF和網管綁定。

Windows 2003不支持網管。

更新:

WCF淨管使用Windows激活Serices(WAS),它包括在Windows 2008

http://msdn.microsoft.com/en-us/magazine/cc163357.aspx

淨管道工程對Windows 2003的,但不是WCF淨管道

編輯

你的意見是正確的,當你運行WCF作爲Windows服務,而不是在IIS中,它應該在winows 2003上工作。

話雖如此,它必須與來自ASP網站的呼叫相關。要開始的一個地方是,你的事件日誌中是否有任何錯誤。

+0

如果這是真的,相同的代碼如何在獨立的vbscript文件中工作?它也使用網管。 – Jab 2009-09-18 18:42:04

+0

我看到你的更新,但我只是沒有看到如何使用相同的WCF服務從機器上運行的VBScript文件的作品,但它不能從網站上運行。這意味着淨管道按預期工作。我認爲WAS只適用於那些通過IIS託管WCF服務的人,我不是。 – Jab 2009-09-18 19:22:31

+0

事件日誌中沒有錯誤。唯一的錯誤是從網站報告的錯誤,它的行爲就好像它不能「看到」那個net.pipe url的服務。 – Jab 2009-09-18 19:43:45