0

我的 wcf 休息服务返回 json 响应时遇到问题。在我的本地 IIS-Web 服务器上的 Visual Studio 2010 中运行该服务运行良好。

但是现在我在带有 IIS 7.5 的 Windows Server 2008 R2 上使用相同的 web.config 运行相同的服务,并且当我通过调用该服务时

*http://localhost/EchoService/EchoService.svc/echo/123

它不会返回 json 结果,而是返回带有未知文件类型的下载对话框,其中包含 json 结果。

首先我认为问题是,网络服务器不知道 json mime 类型,所以我添加了它:

扩展名: .json

MIME-类型:应用程序/json

入口类型:本地

但这并没有解决问题。你能告诉我为什么它将结果作为文件返回并且不知道文件类型吗?

这是我的 web.config:

<?xml version="1.0" encoding="UTF-8"?>
   <configuration>
      <system.serviceModel>
         <services>
            <service name="wcf_iis_proto_1.EchoService">
               <endpoint address="" binding="webHttpBinding" contract="wcf_iis_proto_1.IEchoService" behaviorConfiguration="webEcho" />
            </service>
         </services>
         <behaviors>
            <endpointBehaviors>
               <behavior name="webEcho">
                  <webHttp />
               </behavior>
            </endpointBehaviors>
         </behaviors>
    </system.serviceModel>
</configuration>

这是我的服务合同(没有使用和命名空间):

public interface IEchoService
{
   [OperationContract]
   [WebGet(UriTemplate = "/echo/{message}", ResponseFormat = WebMessageFormat.Json)]
   string EchoMessage(string message);
}

和服务实施:

public class EchoService: IEchoService
{
    public string EchoMessage(string message)
    {
       return "Hey Buddy. You said: " + message + "!";
    }
 }

我希望你能帮助我。谢谢!!!

4

1 回答 1

0

可能是您浏览器中的预期行为。它将 Json 视为要下载的类型。为避免这种情况,您应该更改内容类型以响应“text/plain”。这里讨论了如何做到这一点。

于 2012-08-28T18:29:15.477 回答