मुझे भी वही त्रुटि मिल रही थी, WCF मेरे लिए ठीक से काम कर रहा था जब मैं इसे देव परिवेश में अपनी साख के साथ उपयोग कर रहा था, लेकिन जब कोई और इसे TEST में उपयोग कर रहा था, तो यह उसी त्रुटि को फेंक रहा था। मैंने बहुत सारे शोध किए, और फिर कॉन्फ़िगर अपडेट करने के बजाय, दोष अपवाद की मदद से WCF विधि में एक अपवाद को संभाला। इसके अलावा WCF के लिए पहचान को उसी क्रेडेंशियल्स के साथ सेट करने की आवश्यकता है जो डेटाबेस में एक्सेस कर रहे हैं, किसी ने आपका अधिकार बदल दिया होगा। कृपया उसी के लिए कोड नीचे देखें:
[ServiceContract]
public interface IService1
{
[OperationContract]
[FaultContract(typeof(ServiceData))]
ForDataset GetCCDBdata();
[OperationContract]
[FaultContract(typeof(ServiceData))]
string GetCCDBdataasXMLstring();
//[OperationContract]
//string GetData(int value);
//[OperationContract]
//CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: Add your service operations here
}
[DataContract]
public class ServiceData
{
[DataMember]
public bool Result { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
[DataMember]
public string ErrorDetails { get; set; }
}
अपने service1.svc.cs में आप इसे कैच ब्लॉक में उपयोग कर सकते हैं:
catch (Exception ex)
{
myServiceData.Result = false;
myServiceData.ErrorMessage = "unforeseen error occured. Please try later.";
myServiceData.ErrorDetails = ex.ToString();
throw new FaultException<ServiceData>(myServiceData, ex.ToString());
}
और नीचे दिए गए कोड की तरह क्लाइंट एप्लिकेशन में इसका उपयोग करें:
ConsoleApplicationWCFClient.CCDB_HIG_service.ForDataset ds = obj.GetCCDBdata();
string str = obj.GetCCDBdataasXMLstring();
}
catch (FaultException<ConsoleApplicationWCFClient.CCDB_HIG_service.ServiceData> Fex)
{
Console.WriteLine("ErrorMessage::" + Fex.Detail.ErrorMessage + Environment.NewLine);
Console.WriteLine("ErrorDetails::" + Environment.NewLine + Fex.Detail.ErrorDetails);
Console.ReadLine();
}
बस यह कोशिश करो, यह सुनिश्चित करने में मदद मिलेगी कि सटीक मुद्दा कैसे मिलेगा।