来自服务的silverlight返回类型中的wcf问题已更改!

来自服务的silverlight返回类型中的wcf问题已更改!,silverlight,wcf,Silverlight,Wcf,相对新的wcf和Silverlight。我一直在努力消化WCF和合同的概念。我发现了一篇网络帖子,展示了一种让WCF工作的方法。正如您将看到的,它没有遵循经典的WCF形式(没有数据契约) 下面是一个代码示例。请注意,ImageData对象不是数据协定的一部分,只是在具有get和set属性的类cs文件中声明为普通对象 尽管这不是“监管”,但它确实有效。对服务的服务引用会自动移动到ImageData类和许多其他信息上,以实现此功能 这很有效。但是,我遇到了一个错误,之前我遇到过两次,有人告诉我某个模

相对新的wcf和Silverlight。我一直在努力消化WCF和合同的概念。我发现了一篇网络帖子,展示了一种让WCF工作的方法。正如您将看到的,它没有遵循经典的WCF形式(没有数据契约)

下面是一个代码示例。请注意,ImageData对象不是数据协定的一部分,只是在具有get和set属性的类cs文件中声明为普通对象

尽管这不是“监管”,但它确实有效。对服务的服务引用会自动移动到ImageData类和许多其他信息上,以实现此功能

这很有效。但是,我遇到了一个错误,之前我遇到过两次,有人告诉我某个模糊的程序集不存在,不允许访问该服务。这种情况以前发生过两次。在这三种情况下,我都能够重新创建服务和服务引用(但我必须更改这两个名称,因为它们似乎已经存在于项目中)。前两次解决了我的问题

这次我使用了相同的修复,但现在代码没有返回函数签名中指示的ImageData列表,而是返回一个名为“GetImageDataResponse”的类型,我不再能够遍历它用来返回的ImageData对象列表。在查看“GetImageDataResponse”的定义时,我发现它看起来像是另一个VS2010生成的函数,其中嵌入了ImageData列表。它似乎在返回类型(列表)上添加了另一层抽象

我不确定是什么导致了奇怪的“缺少程序集”错误,这些错误似乎是随机发生的,并导致我重新构建服务。现在我不知道为什么我要从指定了明确返回类型并在以前工作过的函数中获得这些新的返回类型

任何帮助都将不胜感激。我希望能够避免必须首先重建服务和服务引用

下面是用于工作的代码,然后是reference.cs文件中“GetImageDataResponse”的定义

谢谢, 图000

[运营合同]
公共列表GetImageData(int imageID)
{
List ImageDataList=新列表();
SqlConnection con=新的SqlConnection(System.Configuration.ConfigurationManager.ConnectionString[“CN_eLogWeb”].ConnectionString.ToString());
SqlDataReader dr=null;
字符串sql=@“选择isnull(i.ANI,”)作为ANI,isnull(i.DonorCorpID,0)作为DonorCorpID,isnull(i.DonorUnitID,0)作为DonorUnitID,isnull(i.AgencyID,0)作为AgencyID,
isnull(i.PickupDT,'1/1/1900')作为PickupDT,isnull(u.inboundsortedstatuid,1)作为inboundsortedstatuid,isnull(u.FollowupRequired,0)作为FollowupRequired
来自Inboundi
i.IncomingID=u.IncomingID上的左连接用户SortSessionInfo u
左连接i.ImageID=img.ImageID上的图像img,其中img.ImageID=“+ImageID;
con.Open();
SqlCommand cmd=新的SqlCommand(sql,con);
dr=cmd.ExecuteReader();
如果(哈斯罗博士)
{
while(dr.Read())
{
ImageData oImageData=新的ImageData
{
ANI=转换为字符串(dr[“ANI”]),
DonorCorpID=Convert.ToInt32(dr[“DonorCorpID”]),
DonorUnitID=Convert.ToInt32(dr[“DonorUnitID]”),
AgencyID=Convert.ToInt32(dr[“AgencyID”]),
PickupDT=Convert.ToDateTime(dr[“PickupDT”]),
状态=GetInboundSortedStatus(转换为32(dr[“InboundSortedStatusID”),
FollowupRequired=Convert.ToBoolean(dr[“FollowupRequired”])
};
ImageDataList.Add(oImageData);
}
}
con.Close();
返回ImageDataList;
}

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.ServiceModel”,“4.0.0.0”)]
[System.ServiceModel.MessageContractAttribute(WrapperName=“GetImageDataResponse”,WrapperNamespace=”“,IsWrapped=true)]
公共部分类GetImageDataResponse{
[System.ServiceModel.MessageBodyMemberAttribute(名称空间=”,顺序=0]
public System.Collections.Generic.List GetImageDataResult;
公共GetImageDataResponse(){
}
公共GetImageDataResponse(System.Collections.Generic.List GetImageDataResult){
this.GetImageDataResult=GetImageDataResult;
}
}
如果(哈斯罗博士)
{
while(dr.Read())
{
ImageData oImageData=新的ImageData
{
ANI=转换为字符串(dr[“ANI”]),
DonorCorpID=Convert.ToInt32(dr[“DonorCorpID”]),
DonorUnitID=Convert.ToInt32(dr[“DonorUnitID]”),
AgencyID=Convert.ToInt32(dr[“AgencyID”]),
PickupDT=Convert.ToDateTime(dr[“PickupDT”]),
状态=GetInboundSortedStatus(转换为32(dr[“InboundSortedStatusID”),
FollowupRequired=Convert.ToBoolean(dr[“FollowupRequired”])
};
ImageDataList.Add(oImageData);
}
}
con.Close();
返回ImageDataList;
}

您是否在不同版本之间对图像数据进行了任何更改


可能导致此问题的一个问题是,ImageData上缺少默认(无参数)构造函数或其属性之一。

我试图编辑您的帖子,使其看起来更好一些。在第二个代码示例中是否有重复的代码?不想假设并删除它。是的。对不起,我没有找到重复的代码。我认为我无法修复它,而你是一个主持人。让我知道。您如何添加引用:添加引用、添加web引用或添加服务引用?您是否还记得需要安装的程序集的名称
[OperationContract]
public List<ImageData> GetImageData(int imageID)
{
    List<ImageData> ImageDataList = new List<ImageData>();
    SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CN_eLogWeb"].ConnectionString.ToString());
    SqlDataReader dr = null;
    string sql = @"SELECT isnull(i.ANI,'') as ANI, isnull(i.DonorCorpID,0) as DonorCorpID,isnull(i.DonorUnitID,0) as DonorUnitID,isnull(i.AgencyID,0) as AgencyID,
            isnull(i.PickupDT,'1/1/1900') as PickupDT, isnull(u.InBoundSortedStatusID,1) as InboundSortedStatusID, isnull(u.FollowupRequired,0) as FollowupRequired
            from InboundSorted i 
            left join UserSortSessionInfo u on i.IncomingID=u.IncomingID
            left join Image img on i.ImageID=img.ImageID where img.ImageID=" + imageID;

    con.Open();
    SqlCommand cmd = new SqlCommand(sql, con);

    dr = cmd.ExecuteReader();



    if (dr.HasRows)
    {
        while (dr.Read())
        {

            ImageData oImageData = new ImageData
            {
                ANI = Convert.ToString(dr["ANI"]),
                DonorCorpID = Convert.ToInt32(dr["DonorCorpID"]),
                DonorUnitID = Convert.ToInt32(dr["DonorUnitID"]),
                AgencyID = Convert.ToInt32(dr["AgencyID"]),
                PickupDT = Convert.ToDateTime(dr["PickupDT"]),
                Status = GetInboundSortedStatus(Convert.ToInt32(dr["InboundSortedStatusID"])),
                FollowupRequired = Convert.ToBoolean(dr["FollowupRequired"])
            };
            ImageDataList.Add(oImageData);
        }
    }

    con.Close();
    return ImageDataList;

}
[System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.MessageContractAttribute(WrapperName="GetImageDataResponse", WrapperNamespace="", IsWrapped=true)]
    public partial class GetImageDataResponse {

        [System.ServiceModel.MessageBodyMemberAttribute(Namespace="", Order=0)]
        public System.Collections.Generic.List<acSilverlightLib.ImgServiceRef2.ImageData> GetImageDataResult;

        public GetImageDataResponse() {
        }

        public GetImageDataResponse(System.Collections.Generic.List<acSilverlightLib.ImgServiceRef2.ImageData> GetImageDataResult) {
            this.GetImageDataResult = GetImageDataResult;
        }
    }



        if (dr.HasRows)
        {
            while (dr.Read())
            {

                ImageData oImageData = new ImageData
                {
                    ANI = Convert.ToString(dr["ANI"]),
                    DonorCorpID = Convert.ToInt32(dr["DonorCorpID"]),
                    DonorUnitID = Convert.ToInt32(dr["DonorUnitID"]),
                    AgencyID = Convert.ToInt32(dr["AgencyID"]),
                    PickupDT = Convert.ToDateTime(dr["PickupDT"]),
                    Status = GetInboundSortedStatus(Convert.ToInt32(dr["InboundSortedStatusID"])),
                    FollowupRequired = Convert.ToBoolean(dr["FollowupRequired"])
                };
                ImageDataList.Add(oImageData);
            }
        }

        con.Close();
        return ImageDataList;

    }