0
我已經實現了一個REST Web服務,該服務返回(在通過RFC 2617 HTTP摘要驗證進行驗證之後)帶有xlink的XML文檔到相關資源。如何獲取WCF Rest請求的被叫地址?
這裏有一個請求的例子:
http://172.32.42.53:8080/Service.svc/user/123
一個結果可能是這樣的:
<?xml version="1.0" encoding="utf-8"?>
<UserList xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<User>
<ID>2</ID>
<UserName>CHI</UserName>
<OutlineLink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://demo:8080/Service.svc/Users/2/Outline/" cache="no"/>
<SettingsLink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://demo:8080/Service.svc/Users/2/Settings/" cache="no"/>
<CatalogsLink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://demo:8080/Service.svc/Users/2/Catalogs/" cache="no"/>
<LastName>Test</LastName>
</User>
</UserList>
所以,現在的問題是:
如果用戶要求通過web服務IP地址,第一次握手將通過IP地址而不是DNS名稱。因此,只有當第二次調用(指定資源)再次通過IP地址時,認證纔會起作用。我用以下命令試了一下:
OperationContext.Current.IncomingMessageProperties.Via.ToString();
但我的web服務總是返回服務器,而不是「被叫地址」的DNS。
是否有可能獲得被叫地址?所以我可以動態地返回被調用的地址(ip或dns)。獲得解決方案會很好。 xlink不允許使用相對URL。
感謝您的幫助!
如何爲您服務託管?另外,你可能會考慮使用XLink 1.1規範。它當然不會禁止相關的href元素。 – 2012-01-09 09:37:13
禁止不是因爲xlink對象,這是因爲與webservice交互的應用程序。 該服務託管在IIS7中,因爲身份驗證不適用於自託管應用程序。 – cansik 2012-01-09 09:48:31
您可以嘗試從請求的服務器變量中檢索被調用的地址嗎?我猜你的網絡服務需要在asp.Net兼容模式才能訪問。 http://msdn.microsoft.com/en-us/library/ms524602(v=vs.90).aspx – Rajesh 2012-01-09 10:05:20