I am new to WCF world. I am facing below issue please help me out.
Error Message:
My WCF Service Code is
namespace PresidentsService { [ServiceContract] public interface IPresidentsService { [OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/presidents")] List<President> GetAllPresidentsXml(); } [DataContract] public class President { [DataMember] public int Id { get; set; } [DataMember] public string LastName { get; set; } [DataMember] public string FirstName { get; set; } [DataMember] public string EmailAddress { get; set; } } }
Service Implementation:
namespace PresidentsService{ public class PresidentsService : IPresidentsService { private List<President> _presidents; internal List<President> Presidents { get { // If there aren't any presidents in our list, populate with samples and return _presidents = _presidents ?? new List<President>(SampleData.SamplePresidents); return _presidents; } } public List<President> GetAllPresidentsXml() { return presidents; } #endregion // IPresidentsService Methods }}
Service Web.Config:
<?xml version="1.0"?><configuration> <appSettings/> <system.web> <compilation debug="true" targetFramework="4.0"/> <httpRuntime/> </system.web> <system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="restfulBehavior"> <webHttp/> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior> <!-- To avoid disclosing metadata information, set the values below to false before deployment --> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> <behavior name="PresidentsService.PresidentsServiceBehavior"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="PresidentsService.PresidentsServiceBehavior" name="PresidentsService.PresidentsService"> <endpoint address="http://localhost:63024/PresidentsService.svc" binding="webHttpBinding" contract="PresidentsService.IPresidentsService" behaviorConfiguration="restfulBehavior"> <identity> <dns value="localhost"/> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <!-- To browse web app root directory during debugging, set the value below to true. Set to false before deployment to avoid disclosing web app folder information. --> <directoryBrowse enabled="true"/> </system.webServer></configuration>
Client Web.Config:
<?xml version="1.0"?><configuration> <system.web> <compilation debug="true" targetFramework="4.0"/> <httpRuntime/> </system.web> <system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="restfulBehavior"> <webHttp/> </behavior> </endpointBehaviors> </behaviors> <client> <endpoint address="http://localhost:63024/PresidentsService.svc" binding="webHttpBinding" bindingConfiguration="" contract="PresidentsService.IPresidentsService" name="IPresidentsService" kind="" endpointConfiguration="" behaviorConfiguration="restfulBehavior"> <identity> <dns value="localhost"/> <certificateReference storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectDistinguishedName"/> </identity> </endpoint> </client> </system.serviceModel></configuration>
And I am calling the service by a ASP.NET page by below way:
So, I am not able to access the service and getting above mentioned error message.
but I can confirm that the service is working well in SOAP UI. Also if I consume this service by below way I can able to get response as well.
string sURL = "http://localhost:63024/PresidentsService.svc/presidents"; WebRequest wrGETURL; wrGETURL = WebRequest.Create(sURL); wrGETURL.Method = "GET"; wrGETURL.ContentType = @"application/xml; charset=utf-8"; HttpWebResponse webresponse = wrGETURL.GetResponse() as HttpWebResponse; Encoding enc = System.Text.Encoding.GetEncoding("utf-8"); StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream(), enc); string strResult = loResponseStream.ReadToEnd(); loResponseStream.Close(); webresponse.Close(); Response.Write(strResult);
So what is the issue? Please help me.