2

使用本教程:

http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide

当我从 VS 2010 运行应用程序时,我可以获得要显示的目录列表。

我可以将 VS 调用的 IE 浏览器中显示的 URL (http://localhost:4841/) 粘贴到 IE 的外部 VS 实例中,然后看到相同的内容。但是,如果我按照教程中所示附加“/xml/123”或“/json/123”,则 URI 为“http://localhost:4841/xml/123”或“http://localhost: 4841/json/123”,我得到:

*“/”应用程序中的服务器错误。

无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的网址:/json/123/

版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.272*

如果我将“RestServiceImpl.svc”附加到 URI,使其为“http://localhost:4841/RestServiceImpl.svc”,我将获得“服务”页面(“这是 Windows© 通信基础服务。元数据发布此服务当前已禁用。"); 但附加“/xml/123”或“/json/123”会导致相同的 404。

最相关的代码(直接取自 5 星教程)是:

[ServiceContract]
public interface IRestServiceImpl
{
    [OperationContract]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Xml,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "xml/{id}")]
    string XMLData(string id);

    [OperationContract]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "json/{id}")]
    string JSONData(string id);
}
4

2 回答 2

1

我认为您缺少实际的服务,例如。RestServiceImpl.svc

所以它会是这样的:

http://localhost:35798/RestServiceImpl.svc/xml/123

于 2012-10-17T17:41:56.953 回答
0

好的,我通过在 Web.config 中替换这个来解决这个难题:

<service name="RestService.RestServiceImpl"

...有了这个:

<service name="REST_JSON_POC.RestServiceImpl"

(以及“RestService”与“REST_JSON_POC”一起出现的其他地方)

(“RestService”是本教程的内容,但 REST_JSON_POC 是我的项目名称)

但现在我有另一个问题,我将为此创建一个新问题(“xml/123”现在可以正常工作,但“json/123”提示下载一个名为“123”的文件,其中包含预期的字符串) .

于 2012-10-17T18:09:42.257 回答