Tuesday, December 27, 2011

VS shortcut keys

 VS shortcut keys
http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx#debug

Ladakh.. waiting to visit it

Ladakh.. waiting to visit it..

Best time to visit is june to october

Duration needed : 7 days

Start point would be : Delhi

book in advance atleast 3 months for cheaper flight tickets




Design Pattern books


Try this book
1)An easy-to-follow guide for .NET 4.0 architects building applications with Design Patterns.
  Ready-to-use Patterns and Practices.  Comes with   100% Source Code
http://www.dofactory.com/Framework/Framework.aspx

Sunday, December 18, 2011

Reading and Writing CSV Files in C#

Good reference :
1)http://www.blackbeltcoder.com/Articles/files/reading-and-writing-csv-files-in-c

2)Building a Simple CSV Parser in C# - link is http://www.switchonthecode.com/tutorials/building-a-simple-csv-parser-in-csharp

Wednesday, December 14, 2011

Tuesday, December 13, 2011

Using RDLC instead of SQL Server Reports (SSRS)

Good links to learn this is

1) Designing and developing RDLC reports in asp.net using Report Viewer and Datasets --> http://am22tech.com/s/22/Blogs/post/2010/05/03/Designing-and-developing-RDLC-reports-in-aspnet-using-ReportViewer-and-Datasets.aspx

 2)http://www.codeproject.com/KB/reporting-services/RDLC_and_DataSet.aspx


3)http://www.codeproject.com/KB/dotnet/microsoftreporting.aspx?q=rdlc+in+.net+2.0

Wednesday, December 7, 2011

Dandeli .. waiting to visit it


Waiting to visit dandeli
More information : http://www.dandeli.com/activities.shtml

Tuesday, December 6, 2011

How to set an IIS Application or AppPool to use ASP.NET 3.5 rather than 2.0


How to set an IIS Application or AppPool to use ASP.NET 3.5 rather than 2.0
ref : http://www.hanselman.com/blog/HowToSetAnIISApplicationOrAppPoolToUseASPNET35RatherThan20.aspx

To verify which version of iis is installed in your system use the step below
The LOCAL MACHINE Branch of registery contains the Version  information for Windows 7.
The Starting Branch is in (HKLM) HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \InetStp\ VersionString value of 6.0

Tuesday, November 29, 2011

Oracle 11g R2 x64 Client with ODAC Installation Guide


ref: http://devblog.rayonnant.net/2011/04/oracle-11g-r2-x64-client-with-odac.html?showComment=1322568025476#c9080251668350644709


when i run the command "OraProvCfg.exe /action:gac /providerpath:C:\Oracle\app\product\11.2.0\client_1\ODP.NET\bin\4\Oracle.DataAccess.dll"

the system says i need to install .net 4.0. when i had a quick look into the folder i found another one for 2.x so the logic is simple "4" is for .net framework 4 and "2.x" for earlier versions.

Hope this helps someone.

Wednesday, November 23, 2011

Combine multiple results in a subquery into a single comma-separated value

1. Create the UDF:

 
CREATE FUNCTION CombineValues(
@F_ID INT --The foreign key from TableA which is used to fetch corresponding records
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @SomeColumnList VARCHAR(8000);
SELECT @SomeColumnList = COALESCE(@SomeColumnList + ', ', '') + CAST(SomeColumn AS varchar(20)) FROM TableB CWHERE C.FK_ID = @FK_ID;
RETURN (
SELECT @SomeColumnList)
END



2. Use in subquery:

SELECT ID, Name, dbo.CombineValues(FK_ID) FROM TableA


ref :http://stackoverflow.com/questions/111341/combine-multiple-results-in-a-subquery-into-a-single-comma-separated-value

Split CSV String into Table in SQL Server

ref :http://www.saqib-ansari.com/2010/04/split-csv-string-into-table-in-sql-server.html

Tuesday, November 8, 2011

My Design suggestions

 My Design suggestions

1. When showing validation error for pages which have multiple ( even collapsible) panels. specify the panel in which the control is present besides the error message.


2)Microsoft Inductive User Interface Guidelines

 

Colorful Expression for wide variaty of color themes for Silverlight

If you want to choose your own color theme I recommend to use Colorful Expression. Colorful Expression is a very useful design tool. It brings to you the wide variaty of color themes created by the Adobe Kular community. It is available as an add-in for Expression Blend and Expression Design or as a standalone tool. You can download Colorful Expression at codeplex.com.

ref:http://blogs.windowsclient.net/silverlaw/archive/2010/02/20/organizing-color-themes-for-a-styled-control-using-resourcedictionary-in-silverlight-3.aspx

Also has how to create themes for our SL pages 

Sunday, November 6, 2011

Tools to use for blog

1)Syntax highlighter to place your code
http://alexgorbatchev.com/SyntaxHighlighter/

Friday, November 4, 2011

Design suggestions

1) to get the mouse cursor image for the link which has the image in it.
    Sol: simply use the style="cursor:pointer" for that link

Thursday, November 3, 2011

test javascript online

http://www.w3schools.com/js/tryit.asp?filename=tryjs_function2

CollapsiblePanelExtender tips

1.Having multiple close\open buttons

   ref: a) http://stackoverflow.com/questions/744184/how-do-i-have-multiple-close-buttons-with-a-collapsiblepanelextender

b)http://stackoverflow.com/questions/6729999/asp-net-collapsiblepanelextender-two-expand-collapse-button-on-one-target

Tuesday, September 20, 2011

Monday, September 12, 2011

Efficient Paging for GridView



REf: http://www.nikhedonia.com/notebook/entry/efficient-paging-for-gridview/

Sys.WebForms.PageRequestManagerParserErrorException - what it is and how to avoid it

Excellent reference

1) http://weblogs.asp.net/leftslipper/archive/2007/02/26/sys-webforms-pagerequestmanagerparsererrorexception-what-it-is-and-how-to-avoid-it.aspx




Wednesday, September 7, 2011

Modal UpdateProgress for UpdatePanel


ref1: http://mattberseth.com/blog/2007/07/modalpopup_as_an_ajax_progress.html - simple and easy

ref1: http://blogs.visoftinc.com/2008/03/13/Modal-UpdateProgress-for-UpdatePanel-Revisited/ 

ref2:  http://weblogs.asp.net/guillermo/archive/2008/02/24/ajax-how-to-create-a-quot-processing-quot-modal-window-using-updateprogress-and-modalpopup-asp-net-ajax-controls.aspx

Saturday, September 3, 2011

Deletes and inserts when using TransactionScope

he TransactionScope has three modes:

1.Required:If a transaction already exists, then the scope of this transaction will join the existing transaction. Otherwise, it will create its own affairs.

2.RequiresNew:The scope of this transaction will create their own affairs.

3.Suppress:If it is within the scope of the current active transaction, the transaction will neither join the ambient transaction nor create their own affairs. As part of the code need to stay outside in the transaction, you can use this option.



So you can change your code as below 

 
// --------------------------
// Insert Method
// --------------------------
protected void Insert()
{
    using (TransactionScope scope1 = new TransactionScope(TransactionScopeOption.RequiresNew))
    {
        // Code for inserting records.
        scope1.Complete();
    }
}
// --------------------------
// Delete Method
// --------------------------
protected void Delete()
{
using (TransactionScope scope2 = new TransactionScope(TransactionScopeOption.RequiresNew))
    {
        // Code for deleting records.
        scope2.Complete();
    }
}
// --------------------------
// Update Method
// --------------------------
protected void Update()
{
using (TransactionScope scope3 = new TransactionScope(TransactionScopeOption.Required))
    {
        Delete();
        Insert();
        scope3.Complete();
    }
}
ref:http://forums.asp.net/p/1590144/4183122.aspx

Cascading DropDownList With Database Example in GridView


Ref 1: With using ajax cascading dropdown list

http://csharpdotnetfreak.blogspot.com/2009/02/ajax-cascading-dropdownlist-database.html

Way 2 :If without using ajax cascading dropdown you can do like this


html code
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="DlBillingDetails_RowDataBound"
                        ShowHeaderWhenEmpty="True" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333"
                        GridLines="None" OnRowCommand="dlBillingDetails_RowCommand">
                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                        <Columns>
                            <asp:TemplateField HeaderText="Operating Company">
                                <ItemTemplate>
                                    <asp:UpdatePanel ID="updPnlOpComp" runat="server" UpdateMode="Conditional">
                                        <ContentTemplate>
                                            <asp:DropDownList ID="ddOperatingCompany" runat="server" AutoPostBack="true" ToolTip='<%#DataBinder.Eval(Container, "DataItemIndex")%>'
                                             OnSelectedIndexChanged="ddOperatingCompany_SelectedIndexChanged">
                                            </asp:DropDownList>
                                        </ContentTemplate>
                                    </asp:UpdatePanel>
                                </ItemTemplate>
                            </asp:TemplateField> 
                            <asp:TemplateField HeaderText="Type of Service">
                                <ItemTemplate>
                                    <asp:UpdatePanel ID="updPnlTOS" runat="server" UpdateMode="Conditional">
                                        <ContentTemplate>
                                            <asp:DropDownList ID="ddtypeOfService" runat="server">
                                            </asp:DropDownList>
                                        </ContentTemplate>
                                    </asp:UpdatePanel>
                                </ItemTemplate>
                            </asp:TemplateField>                          
                        </Columns>
                        <EditRowStyle BackColor="#999999" />
                        <EmptyDataTemplate>
                            No records found!
                        </EmptyDataTemplate>
                        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                        <SortedAscendingCellStyle BackColor="#E9E7E2" />
                        <SortedAscendingHeaderStyle BackColor="#506C8C" />
                        <SortedDescendingCellStyle BackColor="#FFFDF8" />
                        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
                    </asp:GridView>



And the C# code is like below ( only for populating the 2nd dropdown)


 protected void ddOperatingCompany_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            DropDownList ddOperatingCompany = (DropDownList)sender;
            int rowid = Convert.ToInt32(ddOperatingCompany.ToolTip);
            DropDownList ddtypeOfService = (DropDownList)dlBillingDetails.Rows[rowid].FindControl("ddtypeOfService");
            if (ddtypeOfService != null)
            {
                FillCombo.TypeOfServices(ref ddtypeOfService, Convert.ToInt32(ddOperatingCompany.SelectedValue)); // my method to fill dropdowns
            }
            UpdatePanel updPnlTOS = (UpdatePanel)dlBillingDetails.Rows[rowid].FindControl("updPnlTOS");
            if (updPnlTOS != null)
            {
                updPnlTOS.Update(); 
            }
        }
        catch (Exception ex)
        {
            Constants.log.Exception("UserControls_EmpBillingAssignment", "ddOperatingCompany_SelectedIndexChanged", "", ex);
        }
    }

Way 3 : withoud ajax

      just use way 2 but just avoid using the update panel and page would refresh.

Feel free to add your comments \ suggestions \ queries \ better soluions.

Easily Raise Events From ASP.NET ASCX User Controls




ref :
1) http://codebetter.com/brendantompkins/2004/10/06/easily-raise-events-from-asp-net-ascx-user-controls/

Tuesday, August 30, 2011

Split CSV numbers into Table in SQL Server

--- From string to table

CREATE FUNCTION [dbo].[ConvertCsvToNumbers]
(
  @String AS VARCHAR(8000)
)
RETURNS
  @Numbers TABLE (Number INT)
AS
BEGIN
  SELECT @String =
    LTRIM(
      RTRIM(
        REPLACE(
          ISNULL(@String, ''), '  ' /* tab */, ' ')))
  IF (LEN(@String) = 0)
    RETURN
  DECLARE @StartIdx       INT
  DECLARE @NextIdx        INT
  DECLARE @TokenLength    INT
  DECLARE @Token          VARCHAR(16)
  SELECT  @StartIdx       = 0
  SELECT  @NextIdx        = 1
  WHILE @NextIdx > 0
  BEGIN
    SELECT @NextIdx = CHARINDEX(',', @String, @StartIdx + 1)
    SELECT @TokenLength =
      CASE WHEN @NextIdx > 0 THEN @NextIdx
      ELSE LEN(@String) + 1
    END - @StartIdx - 1
    SELECT @Token =
      LTRIM(
        RTRIM(
          SUBSTRING(@String, @StartIdx + 1, @TokenLength)))
    IF LEN(@Token) > 0
      INSERT
        @Numbers(Number)
      VALUES
        (CAST(@Token AS INT))
    SELECT @StartIdx = @NextIdx
  END
  RETURN
END
----From Table values to string
declare @RoleIds varchar(max)
select @RoleIds = coalesce(@RoleIds + ',','') + convert(varchar, nRoleID)
       from    EmpRole
       WHERE  sEmployeeID =10

ref:http://alekdavis.blogspot.com/2009/04/convert-string-to-table-in-sql.html

Wednesday, August 24, 2011

Getting Ajax autocompleteextender selected value

1) create data source as  List<string>();
 List<string> custList = new List<string>();
            string custItem = string.Empty;
            while (dr.Read())
            {
                custItem=AutoCompleteExtender.CreateAutoCompleteItem(dr[0].ToString(),dr[1].ToString());
                custList.Add(custItem);

            }
2)In the Asp.net page
 <script type="text/javascript">
    function ace1_itemSelected(sender, e)
    {
        var hdCustID = $get('<%= hdEmpID.ClientID %>');
        hdCustID.value = e.get_value();
    }
    </script>
 <asp:TextBox ID="txtEmpName" AutoPostBack="true" AutoComplete="off" runat="server"
                    OnTextChanged="txtEmpName_TextChanged" />
                <cc1:AutoCompleteExtender ID="ace1" TargetControlID="txtEmpName" ServiceMethod="GetSuggestions"
                    MinimumPrefixLength="1" OnClientItemSelected="ace1_itemSelected" FirstRowSelected="true"
                    runat="server" />
                <asp:HiddenField ID="hdEmpID" runat="server" />
3) the the code behind 
   String selectedEmpID =  hdEmpID.Value;

Thats it! 

Ref: http://forums.asp.net/t/1608031.aspx/1?AutoCompleteExtender+Selected+Value+Feature

Tuesday, August 23, 2011

Dropdown in GridView

1. Setting the value of dropdown in row databound
// Retrieve the underlying data item. In this example
// the underlying data item is a DataRowView object.
DataRowView rowView = (DataRowView)e.Row.DataItem;

// Retrieve the state value for the current row.
String state = rowView["state"].ToString();

// Retrieve the DropDownList control from the current row.
DropDownList list = (DropDownList)e.Row.FindControl("StatesList");

2.How can you access and display the row index of a gridview item as the command argument

 commandargument='<%#DataBinder.Eval(Container, "DataItemIndex")%>'



Ref:
1. Setting value of dropdown

2. For all operations

Friday, August 19, 2011

ASP.NET: Recursive FindControl & Extension Methods


Ref: 1.ASP.NET: Recursive FindControl & Extension Methods


Joining Three or More Tables


Example query :
SELECT p.Name, v.Name
FROM Production.Product p
JOIN Purchasing.ProductVendor pv
ON p.ProductID = pv.ProductID
JOIN Purchasing.Vendor v
ON pv.BusinessEntityID = v.BusinessEntityID
WHERE ProductSubcategoryID = 15
ORDER BY v.Name;

Thursday, August 4, 2011

Tip/Trick: Show Header and Footer of GridView when no Data returned.

reference : 1) http://geekswithblogs.net/dotNETvinz/archive/2009/03/11/tiptrick-show-header-and-footer-of-gridview-when-no-data.aspx

2)http://stackoverflow.com/questions/3437581/show-gridview-footer-on-empty-grid

To Access Footer when no Grid Data
when grid source has no data, you have the row from emptydataTemplate which is not placed in normal Rows collection but is nested in Control(0) of gridview (which is a ChildTable that comes from System.Web.Ui.Controls and it is a
System.Web.UI.WebControls.Table

in these situations you can get the gridviewRow this way:
vb code
dim dr as GridViewRow= gridview1.Controls(0).Controls(0)
c# code
GridViewRow dr= gridview1.Controls[0].Controls[0];

Friday, July 15, 2011

Using Enums

References:

1 . EnumHelper - Getting a Friendly Description from an Enum

2. Enum: Binding to the Description Attribute

3)Enum Helper Get enum values to bind to a listcontrol
///
/// Get all the values of an enumeration of Type enumType and bind to a listcontrol
///

/// Enumeration type/// List control /// Array of objects
public static void BindEnumToListControl(Type enumType, ListControl lstControl)
{
Dictionary enumslist = new Dictionary();
foreach (int enumValue in Enum.GetValues(enumType))
{
enumslist.Add(enumValue,Enum.GetName(enumType, enumValue));
}
lstControl.DataTextField = "Value";
lstControl.DataValueField = "Key";
lstControl.DataSource = enumslist;
lstControl.DataBind();
}

4)To convert integer to enum
EnumType var = (EnumType)(Convert.ToInt16(Enum_value);

5)Get enum integer value -- check
int i = (byte)Enum.Parse(typeof(EnumTypestring), volume_value));
or
int i = (byte)EnumType.Item;

Feel free to leave your comments!!

Thursday, July 14, 2011

Learn asp.net stepbystep tutorials

Reference:
http://www.learn-asp.net/asptutorials/DetailsView.aspx

Logging in .net

1)Good logging module - like log4net
2)Good logging format code so that reading the log to find out
error is easier-- find out!!
eg: datetime :classname :method Name :message

3) Simple logging code is shown below

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace Common
{
    public class Logger    {
        private static string _logFileName = string.Empty;
 
        /// <summary>        /// Create a statis logger instance for your project        /// </summary>        /// <param name="filename">Log file name</param>        public Logger(string filename = "log.txt")
        {
            _logFileName = filename;
        }
 
        /// <summary>        /// Used to log an exception information        /// </summary>        /// <param name="ex"></param>        /// <param name="classname"></param>        /// <param name="methodName"></param>        /// <param name="msg"></param>        public void WriteEx(Exception ex, string classname = ""string methodName = ""string msg = "")
        {
            try            {
                StreamWriter sw = new StreamWriter(_logFileName, true);
                sw.WriteLine(string.Format("{0} : {1} : {2} : {3} : {4} ", 
                              DateTime.UtcNow.ToShortDateString(), classname, methodName, ex.Message, msg));
            }
            catch            {
                //Do nothing            }
        }
 
        /// <summary>        /// Used to log any information        /// </summary>        /// <param name="ex"></param>        /// <param name="classname"></param>        /// <param name="methodName"></param>        /// <param name="msg"></param>        public void WriteMsg(string msg, string classname = ""string methodName = "")
        {
            try            {
                StreamWriter sw = new StreamWriter(_logFileName, true);
                sw.WriteLine(string.Format("{0} : {1} : {2} : {3} ",
                              DateTime.UtcNow.ToShortDateString(), classname, methodName, msg));
 
            }
            catch            {
                //Do nothing            }
        }
    }
}



to be continued...

Friday, July 1, 2011

What's the best practice for primary keys in tables?

1. Primary keys should be as small as necessary. Prefer a numeric type because numeric types are stored in a much more compact format than character formats. This is because most primary keys will be foreign keys in another table as well as used in multiple indexes. The smaller your key, the smaller the index, the less pages in the cache you will use.
When dealing with "small" databases this stuff doesn't matter so much. But when you deal with large db's all of the little things matter. Just imagine if you have 1 billion rows with int or long pk's compared to using text or guid's. There's a huge difference!

Reference:
1 .http://stackoverflow.com/questions/337503/whats-the-best-practice-for-primary-keys-in-tables

Are You A Good Developer?

A must read aticle at --> http://www.dotnetcurry.com/ShowArticle.aspx?ID=182

Monday, June 27, 2011

Database Design Guidelines

References :

1.Best practices SQL Server naming conventions
http://www.sqlservercentral.com/articles/Naming+Standards/2895/

2.Best practices SQL Server naming conventions
http://vyaskn.tripod.com/object_naming.htm

3)10+ common questions about SQL Server data types
http://www.techrepublic.com/blog/10things/10-common-questions-about-sql-server-data-types/355

4)Composite Primary Keys

Date time vs small datetime in sql server 2005

DATETIME column must fall within the range of January 1, 1753, through December 31,
9999.

SMALLDATETIME column must fall within the range of January 1,
1900, through June 6, 2079.

Hence we can use Smalldatetime for most of our apps.

Ref:http://suryan72.blogspot.com/2008/08/date-time-vs-small-datetime-in-sql.html

Saturday, June 18, 2011

How to disable a button after click it in Asp.net?

How to disable a button after click it in Asp.net?

Solution :

Button1.Attributes.Add("onclick", "javascript:" + Button1.ClientID + ".disabled=true;" + ClientScript.GetPostBackEventReference(Button1,""))

This can help avoid multiple submissions by a single buttons.

Friday, June 17, 2011

'Thread is being aborted' when using Response.Redirect

Issue :'Thread is being aborted' when using Response.Redirect

FIX: If you want to get rid of this exception, use Response.Redirect(url, false).

Cause explanation:
Your page is executing by a thread on which asp.net worker process contains. And on some line in your code, an instruction (Response.Redirect) wants to stop the execution because it must be stopped and asp.net framework must be notified about a redirection request.

Asp.net framework catches the Redirect method's exception, aborts the thread and use a new thread for execution of to be redirected page.

This occurs when you specify the second argument of Redirect method as True. Because this means to asp.net framework as 'Stop this page's execution ASAP and execute to be redirected page'.

Ref:http://p2p.wrox.com/asp-net-1-0-1-1-basics/5684-thread-being-aborted.html

Friday, June 3, 2011

TRY...CATCH + BEGIN TRANSACTION in SQL Server a good way for error handling

TRY...CATCH + BEGIN TRANSACTION in SQL Server a good way for error handling than just @@error since the later gives only if last statement made error unlike the former which tracks if error occurs in any statement in that block.
BEGIN TRANSACTION
BEGIN TRY
Try Statement 1
Try Statement 2
...
Try Statement M
END TRY
BEGIN CATCH
ROLLBACK
Catch Statement 1
Catch Statement 2
...
Catch Statement N
END CATCH

COMMIT

Ref: http://www.4guysfromrolla.com/webtech/041906-1.shtml

Thursday, June 2, 2011

Tuesday, May 31, 2011

SQL SERVER – Query to Find Column From All Tables of Database

1. To get Simply the table names for a column name

SELECT name FROM sysobjects WHERE id IN ( SELECT id FROM syscolumns WHERE name like '%your_column_name%' )

or else by schema and more detail

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%your_column_name%'
ORDER BY schema_name, table_name;



References:
1)http://blog.sqlauthority.com/2008/08/06/sql-server-query-to-find-column-from-all-tables-of-database/


2.Retrieve columnnames of all tables in a SQL Server database


a)In SQL-Server 2005+ you can do it using system views sys.columns and sys.tables
SELECT t.name TableName, c.name ColumnName
FROM sys.tables t
     JOIN sys.columns c ON t.object_id=c.object_id
b)Before SQL SERVER 2005 you can use below

SELECT   SysObjects.[Name] as TableName,   
    SysColumns.[Name] as ColumnName,   
    SysTypes.[Name] As DataType,   
    SysColumns.[Length] As Length   
FROM   
    SysObjects INNER JOIN SysColumns   
ON SysObjects.[Id] = SysColumns.[Id]   
    INNER JOIN SysTypes  
ON SysTypes.[xtype] = SysColumns.[xtype]  
WHERE  SysObjects.[type] = 'U'  
ORDER BY  SysObjects.[Name]

Monday, May 23, 2011

visual studio dev server thows an error during start

Visual studio dev server thows an error during start
like the one below

"An attempt was made to access a socket in a way forbidden by its access permissions"

The user action section in this link should help fix the issue


So you may do it for any exe which uses the same and it will work for you

Wednesday, April 20, 2011

Welcome to Ram'sBlog

Wish V have loads of fun , learning and much more here..

Brevity is beauty..

Devops links

  Build Versioning in Azure DevOps Pipelines