How to call python generator in c#

In this post,I will show you how to call python generator in c#.Create a console Application and then right click on the project and add new file fib.py and add following code
class Fib:

    def __init__(self,num):

        self.a=0

        self.b=1

        self.num=num

        self.index=0

    def __iter__(self):

        return self

    def next(self):

        if self.index > self.num:

            raise StopIteration

        else:

            self.index +=1

            self.a,self.b=self.b,self.a+self.b

            return self.a

Open Progrm.cs and add following code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Scripting.Hosting;
namespace IronPython_Tut1
{
        class Program
    {
        static void Main(string[] args)
        {
        //Create runtime
            ScriptRuntime runtime = IronPython.Hosting.Python.CreateRuntime();
        //excute 
            ScriptScope scope = runtime.ExecuteFile(@"Fib.py");
        //get the Fib object
            dynamic Fib = scope.GetVariable("Fib");
        foreach (var item in Fib(10))
            {
                Console.WriteLine(item);
            }
          
        }
    }
}


How to call python class in c#

In this post,I will show you how to call python class in c#,Create a new python class named Person.py and paste following code


class Person:
    def __init__(self,firstName,lastName,age):
        self.firstName=firstName
        self.lastName=lastName
        self.age=age
   
    def __str__(self):
        return self.firstName +","+self.lastName+","+self.age
    def get_full_name(self):
        return "%s,%s" % (self.firstName, self.lastName)
   
   


Open program.cs and add following code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Scripting.Hosting;
namespace IronPython_Tut1
{
    class Program
    {
    static void Main(string[] args)
        {
    //Create runtime
            ScriptRuntime runtime = IronPython.Hosting.Python.CreateRuntime();
    //excute 
            ScriptScope scope = runtime.ExecuteFile(@"Person.py");
    //get the Person object
            dynamic Person = scope.GetVariable("Person");
    //Create instanc of Person class.
            dynamic personObject = Person("santosh", "singh", 24);
    //call  the get_full_name method on person instancw
            Console.WriteLine(personObject.get_full_name());
            Console.ReadLine();
        }
    }
}

IronPython and C#


What is IronPython

IronPython is an open-source implementation of the Python programming language which is tightly integrated with the .Net Framework.
IronPython can use the .Net Framework and python libraries,and other .NET languaages can use Python code just as easily

In this post I will show you how to call Python method in c#.


Create a new Console application and visual studio
Right click on the project and click on Manage Nuget Packages and search for IronPython

After installing IronPython import following namespaces
using Microsoft.Scripting.Hosting;

Right click on project and add new file Calculator.py and add following python code


def add(a,b):
    return a+b

Open Program.cs file and add following code


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Scripting.Hosting;
namespace IronPython_Tut1
{
    class Program
    {
    static void Main(string[] args)
        {
    //Create runtime
            ScriptRuntime runtime = IronPython.Hosting.Python.CreateRuntime();
    //excute 
            dynamic scope = runtime.ExecuteFile(@"Calculator.py");
    //call the python method
            Console.WriteLine("Sum={0}", scope.add(1, 2));
            Console.ReadLine();
        }
    }
}

How to implement twitter search in asp.net

In this post,I will show you how to implement twitter search in asp.net.In this project,I am using following things




<a href="http://search.twitter.com/search.json" target="_blank">Twitter search Api</a>
<a href="http://jquery.com/" target="_blank">Jquery</a>
<a href="http://handlebarsjs.com/" target="_blank">Handlebars jquery template</a>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Twitter.aspx.cs" Inherits="Twitter" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        body
        {
            width: 600px;
            margin: auto;
        }
        .tweets
        {
            list-style-type: none;
        }
        img
        {
            float: left;
            padding-right: 1em;
        }
        a
        {
            text-decoration: none;
        }
    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
    <script src="Scripts/Handlebars.js" type="text/javascript"></script>
    <script type="text/javascript">
    var Twitter =
         {
             init: function () {
    this.url = "http://search.twitter.com/search.json?q='" + $("#txtSearch").val() + "'&callback=?";
    this.template = $("#template").html();
    this.fetch();
             },
             fetch: function () {
    var self = this;
                 $.getJSON(this.url, function (data) {
                     self.tweets = $.map(data.results, function (tweet) {
    return {
                             author: tweet.from_user,
                             tweet: tweet.text,
                             thumb: tweet.profile_image_url,
                             url: 'http://twitter.com/' + tweet.from_user + '/status/' + tweet.id_str
                         };
                     });
                     self.parse();
                 });
             },
             parse: function () {
    var template = Handlebars.compile(this.template);
    var container = $(".tweets");
                 container.append(template(this.tweets));
             }
         };
        $(document).ready(function () {
            $("#btnSearch").click(function () {
                Twitter.init();
            });
        });
    
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input type="text" id="txtSearch" /><br />
        <input type="button" id="btnSearch" value="Search" />
        <ul class="tweets">
            <script type="text/x-handlebars-template" id="template">
            {{#each this}}
            <li>
            <img src="{{thumb}}" alt="{{author}}"></img>
            <p><a href="{{url}}"> {{tweet}} </a></p>
            </li>
            {{/each}}
       
    </script>
    </ul>
    </div>
    </form>
</body>
</html>

You can download the complete source code from below git location
code

Passing complex objects into a WCF Rest Service

In this post,I will show you how to pass complex json data from jquery to wcf service.
  • Create a new website in visual studio.
  • Add a new item wcf service named BlogService and replace the existing code with following
IBlog.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;

[ServiceContract]

public interface IBlog
{
    [WebInvoke(UriTemplate = "blogs", Method = "POST",
            BodyStyle = WebMessageBodyStyle.WrappedRequest,
            RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json)]
    [OperationContract]
    string SubmitBlock(Blog blogs);
}
IBlogService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;

[ServiceBehavior]


public class BlogService : IBlog
{


    List<Blog> _blogs = null;
    [OperationBehavior]
    public string SubmitBlock(Blog blogs)
    {
        //Process your data.
    }
}
[DataContract]
[KnownType(typeof(BlogPost))]
public class Blog
{
    [DataMember]
    public string BlogID { get; set; }
    [DataMember]
    public string Title { get; set; }
    [DataMember]
    List<BlogPost> Blogs { get; set; }
}
[DataContract]
public class BlogPost
{
    [DataMember]
    public string BlogPostID { get; set; }
    [DataMember]
    public string BlogID { get; set; }
    [DataMember]
    public string BlogContent { get; set; }
}
  • Open web.config and made highlighted changes

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="Service1Behavior" name="BlogService">
        <endpoint address="" binding="webHttpBinding" behaviorConfiguration="EnableScript"  contract="IBlog">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>

        <behavior name="EnableScript">
          <webHttp></webHttp>

        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="Service1Behavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
  </system.serviceModel>
</configuration>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
   <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">

        var DTO =
    {
        "BlogID": "1",
        "Title": "Aspdotnetcodebook",
        "Blogs": [
            {
                "BlogPostID": "1",
                "BlogID": "1",
                "BlogContent": "This is my first post"
            },
            {
                "BlogPostID": "2",
                "BlogID": "1",
                "BlogContent": "This is my second post"
            }
        ]
    };


        var blogs1 = {blogs: DTO };
        $(document).ready(function () {

            $.ajax(
            {
                type: "POST",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                processdata:false,
                data:JSON.stringify(blogs1),
                url: "http://localhost:6548/Blog/BlogService.svc/blogs",
                success: function (data) {
                    alert(data);
                }
            }
            );
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>
Complete source code

How to add Header and Footer on every page by using HttpModule in asp.net

In this post,I will show you a very simple way to add header and footer on every page using HttpModule.

  • Open visual studio and create a new website.
  • Right click on website and add a new class named HeaderAndFooter,and inherit this class with IHttpModule inteface.
using System;
using System.Web;
using System.IO;

public class HeaderAndFooter : IHttpModule
{
    const string PageHeaderText = "<h1>Header Added by Module<h1>";
    const string PageFooterText = "<h1>Footer added by Module</h1>";

    public void Init(HttpApplication app)
    {
        // Register for pipeline events
        app.BeginRequest += new EventHandler(OnBeginRequest);
        app.EndRequest += new EventHandler(OnEndRequest);
    }

    public void Dispose()
    {
        // Nothing to do here
    }

    public void OnBeginRequest(object sender, EventArgs e)
    {
        HttpApplication app = (HttpApplication)sender;
        HttpContext ctx = app.Context;

        // Add custom header to the HTTP response
        ctx.Response.AppendHeader("Author", "DinoE");
        ctx.Response.Write(PageHeaderText);
    }

    public void OnEndRequest(object sender, EventArgs e)
    {
        // Get access to the HTTP context 
        HttpApplication app = (HttpApplication)sender;
        HttpContext ctx = app.Context;

        // Append some custom text
        ctx.Response.Write(PageFooterText);
    }
}
  • Open the web.config and register the module as below
<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <httpModules>
      <add name="HeaderAndFooter" type="HeaderAndFooter,App_Code"/>
    </httpModules>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
</configuration>