如何在dotnetnuke中运行WCF服务

时间:2012-10-02 11:48:17

标签: wcf dotnetnuke wcf-data-services wcf-client

我正在尝试在DNN下运行WCF服务 我创建了一个新的WCF服务网站项目并将输出设置为C:\inetpub\...\dotnetnuke\bin
我还从该项目中删除了web.config 然后我在控制台项目上创建并尝试添加服务引用,但是我收到以下错误:

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

我将代码从旧的网络配置中移除到dnnweb config <system.serviceModel>但仍然无法正常工作。 我想要做的是能够使用像

这样的网址访问网络服务
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

我收到以下错误页面:

  

类型&#39;服务&#39;,作为服务属性值提供   ServiceHost指令,或在配置元素中提供   system.serviceModel / serviceHostingEnvironment / serviceActivations可以   找不到。

1 个答案:

答案 0 :(得分:3)

即使您确实可以使用此功能,但您只需调用任何DNN API,因为您的请求不具备完整的DNN上下文。

更容易的解决方案是使用服务框架。它最初是在6.2和基于MVC2的实现中发布的,并且很快将在7.0中使用基于WebAPI的实现进行更新。

您可以找到有关使用服务框架here的几篇帖子。