0

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

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

我收到以下错误页面:

找不到类型“服务”,作为 ServiceHost 指令中的服务属性值提供,或在配置元素 system.serviceModel/serviceHostingEnvironment/serviceActivations 中提供。

4

1 回答 1

3

即使你确实让它工作了,你也只会遇到调用任何 DNN API 的麻烦,因为你的请求不会有完整的 DNN 上下文。

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

您可以在此处找到有关使用服务框架的几篇文章。

于 2012-10-03T00:44:01.957 回答