我有一个简单的WCF Rest Service,有一种方法。界面定义为:
[ServiceContract]
public interface IHelloRest
{
[OperationContract]
[WebGet(UriTemplate = "json/hello/{name}", ResponseFormat = WebMessageFormat.Json)]
string Hello(string name);
}
实施定义为:
public string Hello(string name)
{
return string.Format("Hello {0}. You called my Hello method", name);
}
我将此服务部署到在Windows Server 2008上运行的IIS 7,以下是我添加服务的步骤:
完成上述步骤后,我遇到了一些问题:
当我浏览http://localhost/HelloRestService.svc/json/hello/xaisoft时,它会询问我是否要下载该文件。如果我下载并打开它,它包含json格式的响应。在我的本地机器上,当我在IIS中托管它时,它工作正常,但在这台远程机器上,它只询问我是否要下载该文件。
另一个问题是我不希望主机是localhost,我想要像demo.rest.com这样的东西,所以我会浏览到http://demo.rest.com/json/hello/xaisoft,但如果我将主机更改为demo.rest .com并尝试现在浏览该服务,它试图转到:
http://demo.rest.com/HelloRestService.svc,但表示Internet Explorer无法显示网页。
答案 0 :(得分:4)
这是正常的,默认的,预期的行为 - IIS和IE不知道如何处理JSON结果,所以最好的选择是提供下载文件,以便您可以存储和查看它。
JSON并非设计用于在浏览器中直接调用 - 如果您想通过浏览直接显示内容,请使用XML。
JSON旨在作为小型有效负载(例如“下载”作为一大块数据)发送回您的客户端应用程序(Web应用程序或其他),然后由Javascript解释并转换为HTML标记(通常)。 / p>
所以我认为这里没有任何问题 - 如果事情很奇怪,那么事实上,在你的本地系统上,它的工作“很好”(这甚至真正意味着什么?会发生什么?)< / p>