Search code examples
c#.netwcfsilverlight

Silverlight WCF throwing The remote server returned an error: NotFound


I'm trying to figure why this is happening. Its super weird

Following are the exact calls i have. Whenever i add that extra datameber at the end of vehicles datacontract i get remote server returned an error: NotFound. when calling pick.SaveVehiclesAsync(infoKey, data);

From Silverlight Side

public void SaveVehicles(InfoKey infoKey, ObservableCollection<VehicleFullInfoModel> vehicleFullInfoCollection, EventHandler<SaveVehiclesEventArgs> callBack)
    {
        var pick = new **ProjectServiceClient**();
        pick.SaveVehiclesCompleted += (sender, e) =>
        {
            if (callBack != null)
                callBack(this, new SaveVehiclesEventArgs(e.Result, e.fault));
        };
        var data =
            new ObservableCollection<VehicleFullInfo>(vehicleFullInfoCollection.Select(rec => rec.Data).ToList());
        pick.SaveVehiclesAsync(infoKey, data);
    }

------------- From WCF service

public interface IProjectService
{
    [OperationContract]
    string SaveVehicles(InfoKey infoKey, IList<VehicleFullInfo> vehicleFullInfoCollection, out FaultContract fault);
}
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ProjectService : IProjectService
{
    public string SaveVehicles(InfoKey infoKey, IList<VehicleFullInfo> vehicleFullInfoCollection, out FaultContract fault)
    {      
        return PickVehicles.SaveVehicles(infoKey, vehicleFullInfoCollection,  out fault);
    }
}

--------- PickVehicles Class-------

Do Saving to a file

------------ Data Contract

[DataContract]
public class VehicleFullInfo
{
    [DataMember]
    public Vehicle Vehicle { get; private set; }
}

------ Vehicle Data Contract

[DataContract]
public class Vehicle
{
    public Vehicle(Data vehicleData, int index)
    {

    }

    [DataMember]
    public string VehicleNumber { get; set; }

    [DataMember]
    public bool? IsVehicleFromPolicy { get; private set; }

    [DataMember]
    public bool? IsInclude { get; set; }

    [DataMember]
    public string VIN { get; set; }

    [DataMember]
    public VehicleTypeEnum Type { get; set; }

    [DataMember]
    public int? ModelYear { get; set; }

    [DataMember]
    public VehicleMake Make { get; set; }

    [DataMember]
    public string Model { get; set; }

    [DataMember]
    public bool? HasAntiTheft { get; set; }

    [DataMember]
    public AirBagTypeEnum AirBagType { get; set; }

    [DataMember]
    public int? GarageZip { get; set; }

    [DataMember]
    public VehicleUseTypeEnum VehicleUseType { get; set; }

    [DataMember]
    public int? Miles { get; set; }

    [DataMember]
    public int? TrailerValue { get; set; }

    [DataMember]
    public bool? IsMotorhomeSold { get; set; }

    [DataMember]
    public int? TrailerCamperLength { get; set; }

    [DataMember]
    public string TrailerDesc { get; set; }

    [DataMember]
    public int? TrailerGrossWeight { get; set; }

    [DataMember]
    public string ExtraField { get; set; }
}

Solution

  • Not Found is a generic error on Silverlight which can mean a lot of things - cross-domain issues, any non-200 responses from the network, etc. There are a few things you can do, such as enabling tracing on the server side, or looking at the network traffic with a tool such as Fiddler, which will give you more information about your error.

    The post at http://blogs.msdn.com/b/silverlightws/archive/2008/04/16/debugging-web-service-usage-in-silverlight-2.aspx has some information which are useful when debugging WCF calls made by Silverlight.