将WCF DLL附加到现有网站

时间:2015-03-25 08:30:41

标签: c# wcf web-config

好的,我已经创建了一个我在IIS中测试过的WCF并且工作正常。

有一个网站在运行,我已完成以下操作,将此服务添加到该域:

将WCF DLL复制到网站的bin文件夹中。

- 还复制了此服务使用的所有DLL。 (只是Newtonsoft.Json)

使用以下行处理新的.svc:

<%@ ServiceHost Language="C#" Debug="true" Service="wcfOnScore.OnScoreQuery"%>

- 并将以下内容添加到网站的web.config文件中:

<System.serviceModel>
<behaviors>
<serviceBehaviors>
        <behavior name="WithDebug">
            <serviceMetadata httpGetEnabled="true" />
            <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
    </serviceBehaviors>
</behaviors>
<protocolMapping>
    <add binding="basicHttpBinding" scheme="http" />
</protocolMapping>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0" />
<services>
  <service name="wcfOnScore.OnScoreQuery">
      <endpoint address="http://www.onscore.co.za/OnScoreQuery.svc"
              binding="basicHttpBinding"
                listenUri="/"
              contract="wcfOnScore.IOnScoreQuery" />
  </service>
</services>
</system.serviceModel>

现在这似乎有效。我在浏览器中打开它时会看到以下页面:

Screenshot of ServicePage

Link To The Screenshot

然而,它并没有悲伤地工作。我试图从c#Xamarin android应用程序中使用此服务。它应该返回一个JSON字符串。 当它在本地托管时这样做很好 - 这让我相信问题不在WCF中,而在于我试图托管它的方式。

我可能错过了什么?还是其他任何替代方案?

先谢谢大家。

修改

以为我会包含错误。

“System.Reflection.TargetInvocationException:调用目标已抛出异常。”

完成的eventhandler参数返回的内容。

2 个答案:

答案 0 :(得分:0)

这就是为什么我得到错误的答案,而不是真正的解决方案。 (尚)

我使用语句注释掉了Newtonsof.Json。并输入一个简单的文本返回工作。

因此,我推断出WCF代码无法获取json.dll。

如果您想用作参考,看起来上面的所有内容都已正确完成。 (除了.dll当然)。

答案 1 :(得分:0)

如果您尝试返回JSON,请首先在浏览器上测试它。您的服务是基于SOAP的服务,因为您使用的是basicHttpBinding。要在浏览器上获得结果,请将绑定更改为WebHttpBinding并在Web配置中添加以下内容。

<endpointBehaviors>
    <behavior name="RestBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>

如果您能够在浏览器上获得响应,您也可以通过Android获得响应。