I tested on my lab and i got it working, here is why it was not working before (my dns was not responding to that query because it had no internet access) and why it is working now
172.16.1.42 Client
192.168.250.50 DNS server
1. Client send a query to dns server asking for www.msftncsi.com
2. DNS server replies the query
3. Computer tries to download ncsi.txt (it is expecting to see Microsoft NCSI inside that txt) from that address but since it has no internet access it fails
*** attaching this image to show what the txt file looks like***
5. Computer now tries to go to www.msftncsi.com/redirect
6. WLC spoofs the destination IP address and send a http 302 “temporarily moved”
7. Guest now knows that it need to go to the captive portal.