Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

debugging asp.net WCF service hosted in IIS

I have created a WCF service using following template:

http://visualstudiogallery.msdn.microsoft.com/fbc7e5c1-a0d2-41bd-9d7b-e54c845394cd

This service has a method like this:

[ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]    
    public class RecordingCompleted
    {

        [WebInvoke(UriTemplate = "", Method = "POST")]
        public string ProcessCall(string JsonData)
        {

        }

    }

I have hosted this service on IIS and url of the method is:

http://[local] host/Notifications/RecordingCompleted/

When I type this address in address bar, I get:

Method not allowed. Please see the service help page for constructing valid requests to the service.

I am trying consume this web service using following code:

string serviceBaseUrl = "http://[local] host/Notifications/RecordingCompleted/";

        string resourceUrl = "";
        string method = "POST";
        //string jsonText = "}";
        UseHttpWebApproach(serviceBaseUrl, resourceUrl, method, jsonText);

and the methods are:

  private string UseHttpWebApproach(string serviceUrl, string resourceUrl, string method, string requestBody)
        {
            string responseMessage = null;
            var request = WebRequest.Create(string.Concat(serviceUrl, resourceUrl)) as HttpWebRequest;
            if (request != null)
            {
                request.ContentType = "application/json";
                request.Method = method;                 
            }

            //var objContent = HttpContentExtensions.CreateDataContract(requestBody);
            if (method == "POST" && requestBody != null)
            {
                byte[] requestBodyBytes = ToByteArrayUsingJsonContractSer(requestBody);
                request.ContentLength = requestBodyBytes.Length;
                using (Stream postStream = request.GetRequestStream())
                    postStream.Write(requestBodyBytes, 0, requestBodyBytes.Length);

            }

            if (request != null)
            {
                var response = request.GetResponse() as HttpWebResponse;
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    Stream responseStream = response.GetResponseStream();
                    if (responseStream != null)
                    {
                        var reader = new StreamReader(responseStream);

                        responseMessage = reader.ReadToEnd();
                    }
                }
                else
                {
                    responseMessage = response.StatusDescription;
                }
            }
            return responseMessage;
        }



 private static byte[] ToByteArrayUsingJsonContractSer(string requestBody)
    {
        byte[] bytes = null;
        var serializer1 = new DataContractJsonSerializer(typeof(string));
        var ms1 = new MemoryStream();
        serializer1.WriteObject(ms1, requestBody);
        ms1.Position = 0;
        var reader = new StreamReader(ms1);
        bytes = ms1.ToArray();
        return bytes;
    }

I am trying to debug the service method but I dont know how to do it. Please suggest me why I am getting error when I type http://[local] host/Notifications/RecordingCompleted/ in address bar. And how to debug the service which is hosted on local host ?

Regards, Asif Hameed

like image 793
DotnetSparrow Avatar asked Apr 04 '13 11:04

DotnetSparrow


1 Answers

Before debugging you will have to deploy your dll and pdb to the IIS directory. Next, in your VS click debug-->Attach to process.. "Ensure to check Show process from all users" and "Show process in all sessions" you should now see W3WP process in your list of available process. Select W3WP and click attach.VS attach screenshot

You should now be able to debug the WCF service. please refer to following blogs for more debugging tips

http://dhawalk.blogspot.com/2007/07/debugging-tips-in-c.html http://anilsharmadhanbad.blogspot.com/2009/07/debugging-wcf-service-hosted-in-local.html

like image 193
Dhawalk Avatar answered Sep 22 '22 01:09

Dhawalk