2010-04-19 73 views
0

我正在嘗試在SharePoint中託管WCF服務。我已經配置了服務兼容與ASP.NET讓我訪問的HttpContext和會話信息SharePoint中的動態WCF基地址

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
public class MISDataService : IMISDataService { ... } 

而且我的配置看起來像這樣

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
    <services> 
     <service name="MISDataService"> 
      <endpoint address="" binding="webHttpBinding" contract="MISDataViews.IMISDataService" /> 
     </service> 
    </services>   
</system.serviceModel> 

雖然這給了我訪問當前HTTP上下文中,服務始終位於根域下,即http://www.mydomain.com/_layouts/MISDataService.svc

在SharePoint中,被訪問的URL通過SPContext類爲您提供有關當前站點的特定上下文信息。因此,通過託管在虛擬目錄中的服務,我希望它在多個地址上可用,例如

http://www.mydomain.com/_layouts/MISDataService.svc 
http://www.mydomain.com/sites/site1/_layouts/MISDataService.svc 
http://www.mydomain.com/sites/site2/_layouts/MISDataService.svc 

這樣服務可以根據當前上下文找出要返回的數據。

是否可以動態配置端點地址?或者是在一個位置託管服務的唯一選擇,然後將「上下文」傳遞給它一些方法?

回答

0

不是WCF專家,但不能在連接到服務時指定端點嗎?

+0

您可以但只要執行服務似乎在域的根下,即如果您請求http://www.mydomain.com/sites/site1/_layouts/MISDataService.svc,服務實際上執行下http://www.mydomain.com/_layouts/MISDataService.svc的上下文。這可能是SharePoint阻礙,但我不這麼認爲...... – 2010-04-20 08:11:20