WCF服务引用调用返回“远程服务器返回错误:NotFound。”
问题描述:
我正在拉我的头发在这一个。WCF服务引用调用返回“远程服务器返回错误:NotFound。”
我有一个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接口。
EDIT 2 ::
原来,问题是使用枚举作为字段(的ItemType)。如上所示,我将ItemType作为已知类型。在这种类型中是否存在特殊情况?这是减速。
[DataContract]
public enum ItemType
{
LOCATION, PART, ASSEMBLY
}
答
已解决。
我错过了ItemType enumaration中每个值的EnumMember。
[DataContract]
public enum ItemType
{
[EnumMember]
LOCATION,
[EnumMember]
PART,
[EnumMember]
ASSEMBLY
}
谢谢你的回应McAden
我觉得这是因为我返回类型RmaItem。这是返回这个类型的第一个函数,也是唯一有问题的函数。我在想什么? – JeremyK