【问题标题】:WCF Service Reference call returning "The remote server returned an error: NotFound."WCF 服务引用调用返回“远程服务器返回错误:NotFound。”
【发布时间】:2012-08-31 14:26:07
【问题描述】:

我正在把头发拉到这个上面。

我有一个用于在 Web 服务器上调用的 WCF 接口。所有其他功能都工作正常,但我添加的新功能导致“远程服务器返回错误:NotFound”。在 End 函数中 Reference.cs 自动生成的文件中。

我知道服务器已找到,我的调试器在服务端中断,它显然被调用并返回正确的类型。

还有什么可能导致这种误导性错误?

[ServiceContract]
public interface IDatabaseQueries
{
...
    [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginGetItemFromId(int itemID, AsyncCallback callback, Object state);

    RmaItem EndGetItemFromId(IAsyncResult result);
...
}

[DataContract]
[KnownType(typeof(ItemType))]
[KnownType(typeof(Location))]
[KnownType(typeof(DateTime))]
public class RmaItem
{
...
}

[SilverlightFaultBehavior]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[KnownType(typeof(RmaItem))]
[KnownType(typeof(RmaReport))]
public class DatabaseService : IDatabaseQueries
{
...
public IAsyncResult BeginGetItemFromId(int itemID, AsyncCallback callback, Object state)
{
    return new DatabaseResponse(itemID);
}

public RmaItem EndGetItemFromId(IAsyncResult result)
{
    return GetRmaItemById((int)(result as DatabaseResponse).GetData);
}
...
}

在“Reference.cs”中崩溃:

public RMA.DatabaseServiceReference.RmaItem EndGetItemFromId(System.IAsyncResult result) {
                object[] _args = new object[0];
                RMA.DatabaseServiceReference.RmaItem _result = ((RMA.DatabaseServiceReference.RmaItem)(base.EndInvoke("GetItemFromId", _args, result)));
                return _result;

编辑:

当我说所有其他功能时,我的意思是附加功能是相同的 IDatabaseQueries 接口。

编辑 2::

原来问题在于使用枚举作为字段 (ItemType)。如上所示,我将 ItemType 作为已知类型。我在该类型上是否缺少特殊条件?这是减速。

[DataContract]
public enum ItemType
{
    LOCATION, PART, ASSEMBLY
}

【问题讨论】:

  • 我觉得这是因为我返回的是 RmaItem 类型。它是第一个返回这种类型的函数,也是唯一一个有问题的函数。我错过了什么??

标签: c# wcf silverlight web-services


【解决方案1】:

已解决。

我缺少 EnumMember 以及 ItemType 枚举中的每个值。

    [DataContract]
    public enum ItemType
    {
        [EnumMember]
        LOCATION,
        [EnumMember]
        PART,
        [EnumMember]
        ASSEMBLY
    }

感谢麦卡登的回复

【讨论】:

    【解决方案2】:

    Silverlight 无法理解所有错误。问题不在于服务器返回“未找到”,而是 silverlight 试图查找 wcf 返回的错误但找不到它。

    您可以按照this 之类的方法查找更多信息,或使用Fiddler 之类的数据包嗅探器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 2013-07-07
      相关资源
      最近更新 更多