2012-01-13 36 views
3

我有一個WCF服務託管在我的網站上。而且我有另一個站點B,它使用IIS URL重寫將所有請求重定向到我的站點A.但是,站點B不處理對.svc文件的任何請求,返回404找不到。任何想法如何使其工作?如何爲WCF服務創建重定向?

UPD重定向配置是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="Redirect" stopProcessing="true"> 
        <match url=".*" /> 
        <action type="Rewrite" url="http://localhost/site_A/{R:0}" logRewrittenUrl="true" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

我發現沒有到.SVC在網站A的IIS日誌文件的任何請求(!)。它不會將這些請求重定向到站點A.但是,當我從站點B請求.htm文件時,它會將它們正確重定向到站點A.

+0

因此,儘管您將它們重定向到服務器B上的有效服務,它們將返回404's?我們需要查看服務的web.config,以瞭解服務未公開的原因(假設服務獨立運行)。 (有可能是服務端點的權限) – 2012-01-16 05:36:25

+0

您是否嘗試使用ipaddress?或機器名稱而不是本地主機? – chandmk 2012-01-21 13:10:53

回答

1

我不知道,但據我記得,如果你沒有HTTP處理程序對站點B的.svc可能發生

+0

站點B不應該處理SVC的請求,它只應該將其重定向到站點A – user626528 2012-01-16 06:27:08

+0

我的猜測是,如果IIS不知道SVC不能重定向請求 – 2012-01-16 06:32:13

+0

任何想法的.SVC處理程序應該如何看這個案件? – user626528 2012-01-16 09:54:03

1

即使你添加在IIS中.SVC處理程序並以與.HTM請求相同的方式重定向它,重定向不會保留消息的正文。因此,對SiteB上的服務方法的請求不一定與SiteA上的服務方法調用相同 - 這取決於您的配置,它是否以REST方式公開,以及您的綁定是什麼。

你可以看看WCF 4.0's Routing功能。這要求您編寫某些邏輯來識別呼叫並讓它呼叫另一個終端。

A'較粗略的解決方案是簡單地擁有網站B主機它只是接受傳入的請求,並要求網站A的等價的服務,得到結果,並返回給調用者的代理服務。

+0

「重定向不會保留消息的正文。」 :你有沒有在MSDN /任何地方的這個參考,或者這是你的經驗的結果? – Badgerspot 2013-10-03 15:31:33

+1

ASP.NET重寫規則只是基於HTTP GET的重定向。但是,如果您通過Fiddler查看,很多WCF方法將採用HTTP POST形式。這些不作爲重定向的一部分處理,這就是爲什麼你需要一個替代解決方案。至於參考資料 - 我會稱之爲更多的經驗,但由於缺乏文檔而被理解。 – Mendhak 2013-10-04 11:33:44

+0

謝謝。你知道是否所有的URL重寫函數(即,在所有的Web服務器)或只是IIS?儘管我一直在研究IIS到IIS的重寫,但我們的客戶端使用WebSeal作爲它們的登錄Web服務器,它充當反向代理並透明地重定向到託管我們Web服務的IIS服務器(在其基礎結構中)。 – Badgerspot 2013-10-04 14:34:38