【问题标题】:The remote server returned an error: NotFound WCF Service远程服务器返回错误:NotFound WCF Service
【发布时间】:2013-08-05 18:00:06
【问题描述】:

Windows Phone 8、Windows 8 + 更新 64 位、VS 2012。以管理员身份运行 VS2012

我创建了一个 WCF 服务。服务代码:

    [OperationContract]
    Object GetCustomersObject();

实现代码

    public Object GetCustomersObject()
    {
        object c = DataContext.Customers;
        return c;
    }

然后我添加一个新网站到我的应用程序并配置 Service.svc 文件以指向合同等。在 Web 浏览器中运行它并可以看到 WSDL。

然后我使用 WCFTestClient 实用程序对其进行测试,但我可以连接到除上述方法之外的所有方法,因为它不支持对象。

我现在创建了一个 Win Phone 8 项目并连接到服务,然后我收到错误 “System.ServiceModel.ni.dll 中发生了 'System.ServiceModel.CommunicationException' 类型的异常,但未在用户代码"

扩展异常我注意到消息是远程服务器返回错误:未找到。。然后我按照http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj684580(v=vs.105).aspx 中的步骤进行操作,因为我在 VS 下运行 IIS,所以我不遵循其他任何说明(也就是说,我按照建议在配置中添加一个条目并打开防火墙端口,删除现有服务并在之后读取它关闭 IIS 服务)。

我仍然遇到同样的错误。所以我删除了服务并使用IP、机器名重新添加它,无论我使用的是哪个,仍然会出现同样的错误。

我还尝试关闭 Windows 防火墙服务以消除它是防火墙问题,但同样的问题仍然存在。

我不知道我还能尝试什么?

【问题讨论】:

标签: c# wcf windows-phone-8


【解决方案1】:

遗憾的是,“未找到”并不意味着实际上没有找到该服务。这是 IIS 告诉您“失败”的方式。

很可能发生故障是因为您的服务或服务接口上没有 KnownType 或 ServiceKnownType 属性,尽管您需要一个。

WCF 的序列化器并不是无所不知的。它会查看您的函数签名并对其进行序列化。你的签名说你返回一个对象。返回除nullnew object() 之外的任何内容都会刺激序列化程序并使您的服务调用失败。如果你想序列化一些不是基本框架类型并且在方法签名中不可见的东西,你需要在你的服务类上放置一个具有该类型的 KnownType 属性或在你的接口上放置一个 ServiceKnownType 属性让 DataContractSerializer 知道会发生什么。

例子:

[ServiceContract]
[ServiceKnownType(typeof(YourCustomer))]
public interface IYourService
{
    [OperationContract]
    Object GetCustomersObject();
}

【讨论】:

  • 堆叠许多 KnownType 属性的替代方法:inaspiralarray.blogspot.com/2013/07/…
  • 大家好,恐怕在添加了上述属性(ServiceKnownType)后我仍然得到同样的错误。只是为了消除我没有做错事,有人知道我可以参考并查看结果的工作教程吗?或者缩小上面发布的方法是否正常工作?
  • 您可以尝试仅使用 Visual Studio 在添加新 WCF 服务项目时创建的服务。如果它正常工作,则问题出在您的代码上,如果不正常,则问题出在基础架构上。
【解决方案2】:

您通常会看到 CommunicationException,因为该应用无法在 localhost 找到 Web 服务。

这里是同样可行的解决方案

https://msdn.microsoft.com/library/windows/apps/jj684580%28v=vs.105%29.aspx

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2012-08-31
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
相关资源
最近更新 更多