Connecting to VPN stops UWP apps internet communication - c#

I am making an app which requires connecting to a specific payment gateway. This payment gateway restricts us to use its VPN for communicating with its API. The problem is as soon as I connect to this VPN, internet connectivity for UWP apps stop functioning. First I thought its problem with my app but even standard apps like Store and Edge browser even doesn't work. Please let me know a workaround to make UWP apps to function with VPN. Since other apps apart from UWP function properly like Firefox, IE, etc easily open up web pages. Skype desktop works... its just UWP apps which don't work.
Thanks in advance.

This will depend on how you are creating the VPN Interface and what the expectation for routing as well as the Interface classification is.
Classification : Network classification such as Private, Public, Domain. You can check the interface classification by running the Powershell Commadlet :
Get-NetConnectionProfile
This will impact the UWP traffic since, if the traffic is trying to go through the VPN, it will require the Private Networking Capability to be able to go through an Interface marked as Private (and there are no other Network Isolation rules set)
More details for at : https://msdn.microsoft.com/library/windows/apps/hh770532.aspx
To check if this is the issue one quick way would be to try using an inbox tool from an admin command prompt as follows
checknetisolation Debug -n=<Package Family Name>
You can get the for an app by running the Get-AppxPackage commandlet in Powershell. With the above command, you will be prompted to use the app and reproduce the issue. Once it has been reproduced you will come back to the app and hit Ctrl + C and it will display if it detected any Drops due to incorrect Capabilities.
Routing Now in general when a VPN connection is made and no routes are set it is marked as a Force Tunnel VPN. What that means is that the Default route for other interfaces gets disabled and the VPN interface's default route gets prioritized. I am not sure if this is your intention. If you only need to use the VPN to communicate with the Payment Gateway, you should consider making the VPN split tunneled after which apps like Edge and Store should continue working going over the physical interface and your App will work as long as it has the Private Networking capability.

From answers.microsoft.com (Thanks to "Ovidiu Cimpian")
go to Control Panel\Network and Internet\Network Connections
open the adapter for the vpn.
Right click -> properties and go to Networking tab.
Select internet protocol version 4 (and/or 6) -> properties -> advanced
deselect Use default gateway on remote network.

Related

Windows Phone 8 Emulator not connecting to internet

I am trying to connect Windows Phone 8 emulator to the internet. I have tried all the tricks and steps given in Stack overflow or any other site but I am unable to get it.
I tried this:
Step 1 - using Hyper-V start the server, once started u can see the two new network adapters added in the (network sharing) page.
Step 2 - go to your visual studio IDE where your application runs, using Emulator run your application, once started try to open IE, it will not connect to internet.
Step 3 - now again come back to network sharing page right click on external adapter which was created newly select properties, hit on sharing tab, now check the two options to have tick mark if not tick that two options and click on OK.
Step 4 - internal adapter which was created newly will be changing the domain name from Unidentified network to your shared Domain name, once changed try to access the IE again in emulator which runs already. now i hope the internet connection works.
But once it's done it is showing:
The Windows Phone Emulator wasn't able to connect to the Windows Phone operating system:
The phone didn't respond to the connect request.
Some functionality may be disabled.
The resolution to which I found on internet was:
All you have to do is going to "Network and Internet --> Network Connections", right click on "vEthernet (Internal Ethernet Port) Windows Phone Emulator" and Enable it.
But it was already enabled .
So I don't know how to make internet work.
Some connection tools on the host can have negative effects when used with the emulator; I found having cisco VPN client installed on the host prevented the emulator from finding the internet. Other VPN clients may have similar side-effects. I simply uninstalled cisco (the inbuilt windows VPN is fine for what I need) and it worked perfectly.
I've also seen problems where it won't find the internet after the host has been suspended / resumed. In that scenario, it turned out to be bad network drivers. I installed a dedicated Intel NIC (rather than the on-board NIC on the motherboard) - problem solved.
Basically, Hyper-V is a bit fussy.
1.Check whether you are using latest internet explorer 10 or not. if not update and check it.
2.Still if it's not working, it could be the problem with your display drivers. You should have WDDM 2.0 drivers. Graphic card also goes well.
If you are using any proxy servers which require credentials for connecting to the internet, it may not probably get connected from the emulator.
This is because it doesnt support proxy authentication. The class for authentication are missing in the phone version of .Net
Please see the below post .
Not able to connect to webservice from a WP7 emulator

Can a local web server be created for Windows 8 Surface RT

My goal is to run flash locally on a Windows Surface RT tablet. From research, I have found that for websites to run flash, they have to be whitelisted on Microsoft's website. Through further research, I have found how to hack the whitelist to add any domain:
http://www.redmondpie.com/how-to-enable-flash-for-any-site-in-windows-8-rt-metro-internet-explorer-10/.
However, I cannot add the local file system (i.e. C:\ or file:\\) as they are not domains. One solution, I have though of is by using localhost. How can I write a web server to run on Windows 8 Surface RT, or can it be done?
In C#, I know you can use System.Net.HttpListener: http://www.codehosting.net/blog/BlogEngine/post/Simple-C-Web-Server.aspx. Is System.Net.HttpListener supported with Surface RT? If not, what are alternative solutions to play flash locally?
Theoretically, it is possible. You need to use StreamSocketListener to get a StreamSocket. Then you handle http input from that socket (tons of work), and send back your response. I've made my protocol work. One thing you might need to pay attention is that you might need a second machine to send the http request. I use IE from another PC to send the test request. Win8 network isolation won't allow tcp connections between 2 apps of a same machine...

Internet disable programmatically

I made a cybercafé application where the internet connectivity is a vital issue. I want to disable the internet connection until any user login in my application.
At first the task is done by disable the Proxy server. But this is not a perfect solution for me because my users use Mozilla Firefox which facilitates some network settings like use no proxy, use system proxy, auto detect proxy or manually configure proxy. So when a user changes those settings from system proxy to no proxy, then my application fail to stop them from browsing.
Please give me some example. I made this application using C#, WPF, SQL server 2008.
To be reasonably certain that there is no access you would have to write an NDIS filter driver.
This should give you full control over the network, including the ability to block all internet access to anyone except your application (or including).
This is fairly complex and requires learning driver development, and can't be done in c#.

Best way of executing code over the internet

basically, I am needing to execute a program on the viewers computer through a website. This program must be capable of talking to device drivers however, which makes it an unlikely candidate for activex. The website will only be used by clients(as in, it's not a public site) so having to change security settings isn't too big of a deal.
Also, we could possibly have them install an application on their computer, and then when they click a button on the website this activex control just executes the application they already installed to avoid device driver problems..
Does anyone have any ideas on how to do this well? I have a feeling activex won't just let you arbitrarily execute local applications. Also, it is preferred to be possible to do without certificates and signing(though it will eventually be over https)
(it's only tagged C# because that's the programming language to be used on both the client and server)
If you only need to tell the application to simply launch or launch with certain data, you can look into registering a protocol handler and create links, that the user can click, similar to myapp://the/data/you/need/to/send.
It sounds like you will have control over the client and server sides, so why not use WCF and set up the client application to connect to the server via a duplexed communication. On the server side keep a list of the clients that have connected to it and then when you need to trigger the client side code it will iterate over the list of clients and send the message to execute the code. And when the client disconnects it will be unregistered from the server.
See this link for more information on the duplex services.
Also, we could possibly have them install an application on their computer, and then when they click a button on the website this activex control just executes the application they already installed to avoid device driver problems..
Ding ding. That's pretty much what you'll have to do.

Limit wifi access using .net application

Currently following is the setup of my wifi connection.
Laptop 1 ------> Wifi Router <------
Laptop 2
There are about 5 laptops which connect to the wifi router to access internet. Network is password protected so anyone with a valid network key can connect and access internet.
I am planning to develop a local website which will be having a list of username and passwords. I will also remove the password of the wifi network so that anyone can connect.
If a connected system tries to access a web page in the internet then redirect them to a Login page (in the local website) and ask them to login. Once successfully logged i,n the mac id should be added to "Allow" list and monitoring starts. Internet should not be available for those who don't have a valid username and password.
I was thinking about developing the application to block/allow internet access though a vb.net/c# application.
I am okay with the website part. What I would like to know is
How I can block/allow internet access through the .net application.
Is it possible in .net or should I be going for an unmanaged code development?
If it is possible where is the best place to start? I have experience in winforms development but not much of network programming.
Will there be any change in my current wifi setup? May be a new webserver/proxy server which will host the website and the windows application?
Sorry about too many questions ;-)
DD-WRT (free firmware) has built in hotspot that already includes many of the features you are looking to build:
http://www.wi-fiplanet.com/tutorials/article.php/3730746
The DD-WRT software runs on the ubiquitous WRT54G router - which you may be using.
Total cost: $0-50 (depending on if you have a WRT54G already)
There are two ways to go about this: You can buy an advanced wireless router that lets you hook up some sort of authentication system, or you can have a separate wired system between the wireless router and its upstream connection (with two network cards). At this point, you should be able to have software on that system to manage the traffic that goes across it (although I don't have direct knowledge of any particular software firewalls that you might be able to use for this)

Categories

Resources