1. Thorn

    In other words, M$ as usual made a toy with ugly architecture and hardcoded “goodies”.
    Reading all that limitations I don”t see what MS improved at all.
    When MS will hire normal developers? Their hindu code suxx.

  2. Devmano

    Thanks a lot for this great Article, it really shed some important light on a question that has been hunting me for long time.

    if you don”t mind I have question, regarding streaming, is it wise to write an ASP.Net HTTP Module or native module to handle that with same performance ?

    currently only options to have streaming on Windows that support all devices is either WOWZA Media Server
    or Unified Streaming Platform
    which uses IIS Native Module.

  3. @Thorn. I think you completely missed the point 🙂 After IIS7 you can virtually do anything on IIS7 via the ASP.NET API, and the entire server is built on the open extensibility model with almost nothing hardcoded into the core.

  4. @Devmano,

    With ASP.NET 4.5, its finally possible to stream to a client. I would consider this route first, before you think about writing a native module to do it.

    You would need to stream asynchronously (think about those slow mobile clients), and be careful about the amount of buffering you are doing, to achieve good scale.

    An alternative approach is if you already have the file on disk, you are almost always better using the HttpResponse.TransmitFile API, which causes IIS to asynchronously spool the file to the client after the request has finished.


  5. Devmano

    thanks a lot Mike for the Answer, so in other words, with 4.5 i can eliminate the need for the 2 libraries i have mentioned ?

  6. hi
    i write a dll in project ATL with a function witch function inclusive a input and output parameter is that byte* type

    STDMETHODIMP CMSDllServer::sum22(BYTE* aa,SHORT len)

    for(int i=1;i<len;i++)
    return S_OK;

    in use during from this function in a windowes application c# doesnot exist no problem and array values returned to truth

    byte[] Packet = new byte[5];

    dllServer.sum22(ref Packet[0],5);

    //out put


    the same function in a webservice returned to only first index array and exist very big problem

    byte[] Packet = new byte[5];
    dllServer.sum22(ref Packet[0],5);

    //out put

    help me pleaseeeeeeeeeeeeeeeeeeeeeeeeeeeee


  7. Mohammad Bilal

    thnx. Dear can you give me suggestion or code to find back links to my or any website in asp.net(C#).

  8. Great site. Plenty of useful information here. I’m sending it to several friends ans also sharing in delicious. And obviously, thank you in your effort!

  9. Rick Sprenkle

    I’ve found a weird limitation of IIS 7, that isn’t a problem with my iisexpress test environment…

    If I offload some of my work inside a managed handler using a C++/CLI library call, all is fine. But if that C++/CLI dll references a native dll call for a single method, all handlers are disabled, with an error call “Unable to load assembly”.

    Looking at the tempInternet files (under the windows .NET framework), I can see that it looks like it fails mid copy from the sitebin folder to the .NET temporary folder — my guess is that it doesn’t know to bring along the dependency dll..

    Any thoughts on how to get around this (without rearchitecting our extensive libraries)

  10. Scott

    Native ISAPI is not C++. Native ISAPI DLL’s can be written in other languages as well. For example. It’s quite easy to develop an native ISAPI DLL in object pascal (Delphi). It’s stable, small and extremely fast. So my first choice would always be native ISAPI unless there is a good reason to do otherwise.

    It is true that it takes some considerations about memory management and parallel code. But that’s knowledge every good programmer should have. If you do it well native ISAPI can make a difference between the need for one server versus five, for the same function.

Leave a Reply

Your email address will not be published. Required fields are marked *