2012-10-02 109 views
0

我想在DNN下運行WCF服務。
我創建了一個新的WCF服務網站項目並將輸出設置爲C:\inetpub\...\dotnetnuke\bin
我也從該項目中刪除了web.config。
然後我就在控制檯項目創建,並嘗試添加服務引用,但我得到了以下錯誤:如何在dotnetnuke中運行WCF服務

An error occured while attempting to find services at 'http://localhost:5847/MyService/Service.svc 

我刪除代碼從舊的Web配置到dnnweb配置<system.serviceModel>但仍然不能正常工作。 我想要做的是能夠與URL訪問Web服務一樣

localhost/dotnetnuke/portal/mywebservice... 

而不是默認

localhost:XXXX/... 

這是從我的DotNetNuke的web.config中

<system.serviceModel> 
    <services> 
     <service name="Service" behaviorConfiguration="ServiceBehavior">   
     <endpoint address="localhost/dotnetnuke/service.svc" binding="wsHttpBinding" contract="IService">   
      <identity> 
      <dns value="localhost"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ServiceBehavior">   
      <serviceMetadata httpGetEnabled="true"/>   
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

如果我在瀏覽器中鍵入完整地址

http://localhost/dotnetnuke/desktopmodules/com.demo.service/service.svc 

我獲得以下錯誤頁:

The type 'Service', provided as the Service attribute value in the ServiceHost directive, or provided in the configuration element system.serviceModel/serviceHostingEnvironment/serviceActivations could not be found.

+0

在你system.serviceModel部分,你應該有一個帶有基地址的,或者你的地址和地址,檢查那些。 – Javier

+0

我添加了我的整個網絡confling – 1110

回答

3

即使你得到這個工作,你就沒有什麼,但麻煩調用任何DNN的API,作爲您的要求不會有完整的DNN上下文。

一個更容易的解決方案是使用的服務框架。它最初是在6.2版本和基於MVC2的實現中發佈的,並且很快將在7.0中通過基於WebAPI的實現進行更新。

你可以找到幾個關於使用服務框架here的文章。

+0

你應該聽聽斯科特斯在這裏說什麼。這是正確的答案。嘗試任何其他解決方案最終會遇到挫折,困難和問題,並會導致您重新使用內置的DotNetNuke服務層。 –