var ip = System.Net.Dns.GetHostAddresses("")[0].ToString();

When the program is run through Fiddler. The above code returns the localhost IP.

I try setting breakpoints at BeforeRequest and BeforeResponse and AfterSessionComplete but no event is recorded?

May I ask is there a way to make it return the correct IP? 

The scenario occurs only when I use Proxifier to define a certain piece of software that will run through a proxy with FiddlerCore.

The situation does not occur when using RegisterAsSystemProxy

Proxifier works as forwarding connections through a proxy. So the whole case sounds like it related to the configuration set by the Proxifier application. I confirmed that as we tested the scenario with FiddlerCore and no Proxifier and the host address is resolved as expected.