2012-03-16 150 views
0

我對暴露在站點文件夾內的一組web服務的現場工作訪問:ASP.net - Web服務 - 僅在本地主機

services 
--- servicea.asmx 
--- serviceb.asmx 

這些服務設置爲允許一些互操作性我們控制的其他網站,並且這些網站都位於同一臺服務器上。

該網站使用基於asp.net表單的身份驗證,但services文件夾已被豁免,並且每個服務在調用方法時執行它自己的身份驗證,並檢查他是否僅從本地地址訪問,精細。

但是,如果我從外部地址訪問services/servicea.asmx,我仍然可以看到可用方法的列表。我無法有效地從外部地址調用任何這些方法,這是應該的,但我不喜歡這樣暴露我們的內部API。有什麼方法可以阻止asmx文件在方框列表中訪問時訪問方法列表嗎?

回答

1

您應該能夠添加以下到你的web.config:

<system.web.services> 
    <protocols> 
     <remove name="Documentation"/> 
    </protocols> 
</system.web.services> 

本應隱藏服務描述頁面。

有關更多信息,請參閱http://msdn.microsoft.com/en-us/library/b2c0ew36%28v=vs.100%29.aspx - 請注意,這也會阻止客戶端生成WSDL代理類,因此它可能成爲實現簡便的真正障礙。

隱藏方法名稱不能代替安全性,但您可能需要考慮是否需要執行此操作。

+0

您是否知道是否有辦法在每個服務級別上執行此操作 - 我們還有一些其他應可從外部訪問的項目。 – Paddy 2012-03-16 10:56:13

+0

一個想法是嘗試使用位置元素:http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspx - 您可以嘗試將上面的塊嵌套在<位置例如路徑=「service1.asmx」>元素,但我找不到任何文檔中的參考,說這將工作 - 對不起。否則,您必須將每個虛擬目錄放入其自己的虛擬目錄或類似目錄中,以便將它們有效地彼此隔離。 – dash 2012-03-16 11:41:08

相關問題