【问题标题】:Why does this simple RESTful WCF Service fail with a 404 error?为什么这个简单的 RESTful WCF 服务会失败并出现 404 错误?
【发布时间】:2012-10-17 17:37:25
【问题描述】:

使用本教程:

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© Communication Foundation 服务。此服务的元数据发布当前已禁用。");但附加“/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);
}

【问题讨论】:

  • 您似乎没有实际运行的服务。
  • 看起来你在你的 url 中忘记了 RestServiceImpl.svc。 localhost:4841/RestServiceImpl.svc/xml/123
  • 是的,我也试过了(修改了我的帖子/问题)
  • @Shmiddty:你可能是对的,但我完全按照教程进行操作。

标签: c# visual-studio-2010 wcf internet-explorer rest


【解决方案1】:

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

所以它会是这样的:

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

【讨论】:

    【解决方案2】:

    好的,我解决了这个难题,在 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”的文件,其中包含预期的字符串在里面)。

    【讨论】:

    • 这将是 json 格式响应的正确行为。如果客户端期待 json 响应,它将正确使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2019-02-16
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多