I have a website developed by using asp.net , c#
In there I made my own comment system. If user want to post a comment He has to enter comment, Name and email.
When I load the comments I am using this code to load the gravator.
using System.Security.Cryptography;
/// Hashes an email with MD5. Suitable for use with Gravatar profile
/// image urls
public static string HashEmailForGravatar(string email)
{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(email));
// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();
// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for(int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
return sBuilder.ToString(); // Return the hexadecimal string.
}
Then using this code to assign it
// Compute the hash
string hash = HashEmailForGravatar(email);
// Assemble the url and return
return string.Format("http://www.gravatar.com/avatar/{0}", hash);
But all I am getting is this default blue image.
Here I am explaining the assining part This is the element on ASPX page
<asp:Image runat="server" ImageUrl='<%#Eval("GravatorURL")%>' />
This is where I am assiging value to that Eval part
DataTable dt = new DataTable();
dt = objBlog_BLL.GetArticleComment(articleID);
dt.Columns.Add("GravatorURL", typeof(String));
foreach (DataRow dr in dt.Rows)
{
string CommenterEmail = dr["author_email"].ToString();
string hash = HashEmailForGravatar(CommenterEmail);
string myGravatar = string.Format("//www.gravatar.com/avatar/{0}?size=50", hash);
dr["GravatorURL"] = myGravatar;
}
dListComment.DataSource = dt;
dListComment.DataBind();
THis is the HTML tag rendering on client side
<img src="//www.gravatar.com/avatar/4F3FFEF1297E4BF2F746007DFCD36FA5?size=50">
I lowered this result by using .LoverCase() . but still the result is same.
But this email address has an image. I found an another site called Avatarapi.com. In there you can enter the email address and check the image. It is fully working. THey also provide a API to do this. All you have to do is using this code
<script src="https://www.avatarapi.com/js.aspx?email=your_email@gmail.com&size=128">
</script>
But problem is they are pointing the URL back to their site when you hover on the gravator. So I need a clean method. Whats wrong with my code?