Quote of the day

About Me

Friday, March 15, 2013

Same old file reference in project when 'Add reference' issue

Here is the "STUPID" scenario i came across,Following is the problem i had

Issue
I had one folder in my computer and it had two different version of dlls,My project already had reference of one of the dll,But now i wanted the reference of other dll,I simply deleted the old reference and tried to add new reference of the other file by selecting it,It was added but was showing old version when i tried to see its property ,I tried multiple times with multiple ways but no luck

Solution


First just check out the folder structure i had in my project,Here "Dlls" is the folder from which i wanted to add another file


You can see the "Dlls" folder is included in the project, And thanks to "Mr. Zakir Rana", One of project partner who insisted me to try excluding this folder and adding reference, It sounded foolish to me as its physical folder after all no matter if it is included or not,But i was surprised as soon as i excluded the folder,And it started taking new reference !!!

Wednesday, February 20, 2013

Ajax call inside for loop issue and solution


Hello people, This post is regarding real day to day issue in coding and its resolution, It sometimes looks small issue but when it starts eating your time you start getting feeling that its no more smaller one, Here goes the issue

As the title of the blog suggests, When you are making AJAX calls inside loop, It is finitely possible that inside loop when the call is made, It takes time to get the result back to client side and by that time loop has already ended and counter has reached to limit and you end up thinking how to keep track of the request, it should get the correct index in "Success" method of $.ajax call, Otherwise it will keep on giving you one count higher than your total count of loop, There can be many way as we know in our world but below is one of the good solution to it

Solutions
See below code for an example

for (var i = 0; i < groupCount.length; i++) 
{
                !function (i) {
                    $.ajax({
                        type: 'POST',
                        url: ,
                        data: data,
                        dataType: "json",
                        success: function (respons) {
                            // Do some action
                            
                        },
                        error: function (err, para1, parra2) {
                           // Do some action 
                        }
                    });
                } (i);

Here we can see we have wrapped the ajax call into !function(), It will make sure that your ajax call works, no matter what !!!, One more dirty fix is that we can change the property called async=false in $.ajax parameters but that does not serve the purpose as when we use ajax it has to be async.

Small but helpful !!!

Tuesday, January 8, 2013

Facebook Graph API calls for facebook integration

FACEBOOK the world of it's own,But it sounds good if you get its power in your site,Photos,Status,Like,Commenting,Facebook albums, In short you can simply go and create your app which does everything for you without even going on to facebook

Facebook has its very superb API which you can find on developer.facebook.com, You can download full binaries to be coded in C# but i will skip that and put that on readers to explore as and when you have time,Lets talk something short and sweet

Facebook Page
Here i am only going to talk about the get API calls,That means only things which only get the data from any public page,Say you have a page on facebook for your business and you want the data from your facebook page to be shown onto your website,You can use these calls,Fast,Easy and Fun,Lets get started

Say i have a photography page on my facebook or any other page,You can get its photo albums and its photos by following code,Some of the things required to make a call are following

  • Unique Id or name of the facebook page
  • Facebook Graph API url on which you will make a http request and wait for the response
  • Each call are different (i.e photos,albums etc,Depending on your requirement) so proper URL of those calles

The Calls
Lets say i want to get the basic details of my FB page,like it's description,cover photo,profile pic,so following is the url you would be using

NOTE: Here i am using my photography page to show,You can replace the page name with yours

Get the FACEBOOK page basic info
https://graph.facebook.com/147326062077207

Try hitting above url into browser and you will get an idea what you would be doing,As it returns well formed JSON string and you will make use of that JSON and display the things
Get the list of photo albums on your page
https://graph.facebook.com/147326062077207/albums

Get list of photos into specific album

From above url you will get list of albums with their album id,and in below url you will pass that album id to get photos inside it

https://graph.facebook.com/153930304750116/photos
Getting album cover photo to show

From above url you will get list of photos for particular album,and if you see its JSON string,The 'picture' property is thumbnail preview of the cover photo, So you can take that 'picture' property and show that image from FACEBOOK's CDN.

There are many other useful properties and functions with GET and POST request,I will be covering them in next blog post, Enjoy playing with it,And do provide feedback !!!

Monday, October 22, 2012

Importance of flushing memory

As we know in our day to day life how important 'Flush' is :),But that teaches us same thing in our programming life as well

Let me share a scenario where i faced the issue,In our day to day life of deadlines,Sometimes we forget to write the code which is actually needed there,You achieved the best with your code but you do not achieve the better sometimes

The Scenario :

I before few days created export to CSV and export functionality of my one of the list (Grid),It was importing the data very well,But on the close examination of data i found out that its inconsistent data,At some point of time it stopped writing the data and from that point onward there were no data in exported file.

Following is the code.


HSSFRow row = wsheet.GetRow(i);
for (short j = 0; j < row.LastCellNum; j++)
{

     HSSFCell cell = row.GetCell(j);
     string strValue = string.Format("\"{0}\",",   Convert.ToString(cell.RichStringCellValue.String));
       StreamWriter.Write(strValue);
       
 

}
StreamWriter.WriteLine();
StreamWriter.Flush();

If you see above code you do not find any issue,Same happened with me,I tried debugging it over and over,logging the operation but surprising thing was in log each and everything was coming,And i end up finding the issue was below

Issue The mistake i did was i was not clearing our StreamWriter from memory by flushing the memory and hence it was creating issue,One single statement introduced and woooo...issue got resolved like below


HSSFRow row = wsheet.GetRow(i);
for (short j = 0; j < row.LastCellNum; j++)
{

     HSSFCell cell = row.GetCell(j);
     string strValue = string.Format("\"{0}\",",   Convert.ToString(cell.RichStringCellValue.String));
       StreamWriter.Write(strValue);
       StreamWriter.Flush();
 

}
StreamWriter.WriteLine();
StreamWriter.Flush();

Everything started working as it should be,Simple but very important to follow the theories.

Wednesday, September 26, 2012

An error occurred while receiving the HTTP response to This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.

You have noticed many times that everything was working fine and suddenly the below error starts coming and you find no way to work it out An error occurred while receiving the HTTP response to This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.

The reason for this is the receiving size of WCF service is smaller then the data which is coming from service It was working before because it was small,So you will have to try to increase the receiving setting in your end point,Possible settings can be following

maxStringContentLength="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"
maxArrayLength="2147483647"

That would definately help you!!!

Tuesday, September 18, 2012

Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a runtime error

Or any file which fires this error,it may be any dll you are using in project

Today fine morning,i opened my old project which is live and needed to change something and upload,but as soon as i tried to run,It fired above error,and i was wondering everything was working fine and what has happened now? But i think our human body sometimes stops working without warning and this is just a code so there may be something wrong with it and i tried figuring it out and below is the story and conclusion

I got one of the targeted solution on below link http://live.mscommunity.net/blogs/damirdobric/archive/2011/03/18/cannot-start-wcf-web-service-because-of-aspnetadapter-failure.aspx

It basically deals with 32bit and 64 bit versions and i end up putting following lines in web.config file

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
        <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.Resource" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <codeBase version="10.0.0.0" href="file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.QualityTools.Resource/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.QualityTools.Resource.dll" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <codeBase version="10.0.0.0" href="file:///C:/Program%20Files/Microsoft%20Visual%20Studio%2010.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.QualityTools.HostAdapters.ASPNETAdapter.DLL" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.Common" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <codeBase version="10.0.0.0" href="file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.QualityTools.Common/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.QualityTools.Common.dll" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.VisualStudio.QualityTools.ExecutionCommon" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <codeBase version="10.0.0.0" href="file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualStudio.QualityTools.ExecutionCommon/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll" />
      </dependentAssembly>
  </assemblyBinding>
</runtime>

Ssy you have UI project,Web services,content delivery etc projects,If you are using hosting in IIS and your project is directly referencing that virtual directory,That means you will end up inserting above lines in all the projects web.config file

Just restart the IIS and try to run your project,It will work now !!!

Tuesday, April 17, 2012

DateTime format and decimal or currency issue resoved using Custom model binders in MVC

Hi all,

You can't keep yourself away from writing blog when you have faced an issue while development and you tried to solve it and finally you come across something interesting which finally resolved the issue

Today's post is regarding the scenario which we face in day to day life (But i faced it for the first time today) where i had multilingual application running on telerik controls

One of the page had DateTimePicker,We have "da-DK" (Danish) clients,When tried to save Date from one page,The page kept on giving error message "DateTime format is not valid" for this field (Typical MVC datetime validation error messgae)

So scenario was in UI everything was coming as per culture,If i select date from DatePicker it was returning correct format,But still couldn't figure out what was wrong

So let me cut the story short and tell you,Model binder was the key to success

The code looks like following

public class DateTimeModelBinder : IModelBinder
{
  public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
  {
            ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
            ModelState modelState = new ModelState { Value = valueResult };
            object actualValue = null;
            try
            {
                string culture = Convert.ToString(HttpContext.Current.Session["culture"]);
                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
                actualValue = Convert.ToDateTime(valueResult.AttemptedValue, Thread.CurrentThread.CurrentCulture);
            }
            catch (FormatException e)
            {
                modelState.Errors.Add(e);
            }

            bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
            return actualValue;
  }
}

Above is simple class created under folder "Helper",Now what it does is it tells compiler that which format the date should be parsed so that its valid on server

Now,We are not done yet,We need to register this binders in global.asax file on Application_Start so that at runtime this class gets called and later on can parse the date as per culture,Which is like below

protected void Application_Start()
{
     AreaRegistration.RegisterAllAreas();
     RegisterGlobalFilters(GlobalFilters.Filters);
     RegisterRoutes(RouteTable.Routes);
           
      ModelBinders.Binders.Add(typeof(DateTime), new DateTimeModelBinder());
     WebAssetDefaultSettings.UseTelerikContentDeliveryNetwork = true;
}


Now,Try to submit the date which previously you were trying to in different culture and all will work,Same applies for currency,You can use Convert.Deciaml() instead of Convert.DateTime

Cheers!!!