How to go from local .Net server to Unity - asp.net

So I have created a server using .Net and Entity Framework that connects to my AWS RDS Microsoft SQL Server. I am using this for a backend in my newest Unity game.
I have tested it by running POST and GET urls in Postman. Logging in and registering works!
When I test I use the URL www.localhost: https://localhost:7254/authentication/register
What I don't understand is when I implement this into my game, what will the URL be?
ex) https://www./authentication/register
I do not understand how to go from running this server local to global. Can users devices use their own local host? (This seems unlikely). I am thinking that I should deploy my server as a web app and attach it to my RDS if thats even possible. I am just unsure of the next steps.
I cannot find a lot of resources on this and I am not a data engineer. Just trying to learn the ocean of knowledge required to be an indie game dev.
Any help is greatly appreciated :)
I have tried to use UnityWebRequest to send GET and POST urls but this is not working as I have no way of using a URL that will work for every device.

Related

ASP.Net MVC4 self-hosted API on same port as website

Dear developer friends,
I have developed a self-hosted API in ASP.Net MVC4 (e.g. http://blogs.msdn.com/b/henrikn/archive/2012/03/01/file-upload-and-asp-net-web-api.aspx), because I needed a solution where I could upload super large files. This works smoothly.
Now I want to upload files to my newly written API through the Bluimp JQuery Upload component.
This works fine, except for some small flaws:
- the progress-bar is not showing
- JQuery raises an error: Unsafe JavaScript attempt to access frame with URL...
It seems clear that this error is raised, because my API runs on another port than the web application, and ajax calls cannot be made over cross domains / ports.
I have already added the forceIframeTransport: true parameter to the fileupload component call. This does some good - without it I cannot upload files at all (because the component tries to upload with an ajax call).
So.. I figured that if there's some way to run my self hosted API on the same port as my web-application (with explicitly defined routes), my world will be happy and shiny again. However.. I'm not quite sure whether this is possible at all..
Unfortunately a proxy from my ASP.Net application will not help me here, as I wrote the API to avoid the IIS limitations (regarding maximum upload size). Using my self hosted API as proxy might to the job, but I think this is a bit.. overkill?
Anyone? Thanks in advance!
Yahoo! Solved it!
var config = new HttpSelfHostConfiguration("http://localhost:49302/api");
In other words - the web api ONLY works when the url starts with /api. All other requests are picked up by my MVC4 web application. But they run on the same port.
So to answer my question: yes it's possible. Just add a root directory.

Mobile App Using Remote Web Server

I must say that I am reaching the end of my tether with Flash Builder and Flex. Firstly, I have built this wonderful app that I want to start using but it is data driven meaning that when I built it, I created it on my localhost. The PHP scripts were generated from Flash Builder and I have edited them to make them more secure. I have all my services working 100% and I have this brilliant app, but I can only run it on localhost. I have done everything necessary and installed Zend Framework on both servers, I have configured Zend properly but I cannot work out how to change the mobile app to now read from my remote web server.
To me this is useless as I want to be able to deploy this app to others to use when they are out and about.
Does anyone have any clue whatsoever as to how to change it from looking at a localhost to looking to my remote web host? Any tutorials or anything that you can think of? Any help would be appreciated.
Does anyone have any clue whatsoever as to how to change it from
looking at a localhost to looking to my remote web host?
Usually, I don't have to do anything. It just works. But, for some reason, the "first migration" from localhost to production seems to be hard for every Flex developer. Here are some things I wrote about that frustrated me.
Before moving forward; I'll add that your post is inherently confusing. You talk about running your app on localhost; but you also talk about building mobile apps. Were you building a native mobile app? If so; how are you running it on localhost? Mobile Native Apps don't run on a local web server; they run in an emulator.
The rest of this post assumes you are building a browser based app, but even if not should give you some good debugging tips.
Most likely you did something ignorantly which is preventing things from working. Once you figure it out you'll never have the problem again. So, here are some things to check:
It sounds like you have URLs hard coded somewhere within your app that point to localhost. I'd look for that first.
If you're using AMF with RemoteObject; it may be in your services-config file that is hard coded into your app. Be sure to check that if you are compiling a services-config into your app.
Beyond that, it is possible that your remote server is not configured properly. When using ColdFusion we have a special URL ( localhost/flex2gateway ) that we can check to verify that Flash Remoting is set up properly. I'm not sure about PHP, but I bet it is something similar.
You didn't tell us your specific setup, but if you're using a locahost SWF with services on you remote server, your remote server will need a crossdomain.xml file to allow the "off-server" access.
You didn't tell us your specific error, which makes it hard to provide more information. But, be sure to test your services--outside of the Flex app--to make sure they don't have remote errors. Be sure to check case sensitivity of URLs on your localhost vs your server. Be sure to use a Network Sniffer such as the Flash Builder Network Monitor to or ServiceCapture or Charles to check the traffic being sent from the browser/Flash Player to your server. You may discover errors that way.

Some basic Azure Questions

I'm currently in the process of building our ASP.NET C# 3.5 Web site and I have been looking at Azure as our possible hosting environment and I had a couple of questions that I couldn't really find answers for on their website. I would appreciate if someone could help me get these figured out.
1) If I setup a single cloud server with my ASP.NET application & SQL server database, and the server went down, Would my application automatically get brought over to a new cloud server and continue to run? Or, am I required to manually move the data over to a new cloud server?
2) In the future, when I need to maintain more instances to handle the load, How hard is it to configure the database and sessions to work across all of the instances?
3) Do I still get remote desktop access on the cloud servers?
4) Are there any other cloud hosting provider that you would recommend over Azure for Windows hosting?
Yes, there is automatic failover and backup
You change a number in a config file, and click save
Not currently
I haven't done a ton of research, but Azure is pretty impressive. It all depends on what your needs are.
If you're a powershell guy, you can write a powershell to swap out the config files for you, there's a pretty good walk through to do that here: http://channel9.msdn.com/learn/courses/Azure/Deployment/DeployingApplicationsinWindowsAzure/Exercise-2-Using-PowerShell-to-Manage-Windows-Azure-Applications/
If you're a cmd file guy, you can use the csmanage.exe to swap config files, downloadable here: http://code.msdn.microsoft.com/windowsazuresamples.

Top 10 gotchas using shared hosting with ASP.NET

I have recently started using a shared-host for my clients so see project progress or to play with a new technology for myself. I seems like every time I deploy a new project that runs fine locally, I run into something new on the shared-host.
Do you have a shared hosting deployment checklist?
What are the common problems you run into when deploying to a shared host?
Medium Trust. If you are developing code to go into a shared host, you should set your local application to run in medium trust otherwise you can almost guarantee you'll get security issues with code that executes fine in full trust but dies in a medium trust environment.
This MSDN article explains about medium trust in more detail:
http://msdn.microsoft.com/en-us/library/ms998341.aspx
They don't always offer you direct access to the database (Enterprise Manager / Management Studio).
You end up using some weird web GUI for creating database entities, which does not accept otherwise valid SQL syntax and you have to update all your queries and stored procedures to accommodate their custom changes and restrictions.
One of mine is file IO permission problems. An example being writing to a file on the web server from ASP.NET. You have to use a provided online tool to allow permission to do more than reads.
No preview site.
That is, a host based path to your web application without actually pointing the DNS to it.
Example:
http://www234.your-shared-host.com/preview/user/bla/default.aspx (don't try it, it's just an example..)
Inconvenient cancellation procedure
In some of the shared hosts I used, I found out that for cancellation I must make a phone call. Nothing over the web, not even an email.
I bet the host thinks most people won't bother calling until it's really needed. They're right.

How to write an offline version of an AJAX/ASP.NET web application

We have a web application that uses AJAX to talk to an ASP.NET web service. We would like to write another version that can be used offline. We need to be able to re-use our existing code as much as possible. What approaches should we consider?
The app is currently using XmlHttpRequest to get dynamic data from the server. Obviously the offline version will not be able to talk to the server, but it does need to talk to something! I'm sure installing IIS or Cassini on the client would work, but I was hoping for a simpler solution. Is there no other way for JavaScript to talk to some external code?
There are plenty offline web apps nowaday. It simply evolve from AJAX.
For example:
WoaS (wiki on a stick / stickwiki), Tiddly Wiki,
Google doc and Gmail is going to be offline.
You don't need a webserver to run these webapps in offline mode. Just store the required data, scripts on the client side (usually as XML).
One of the possibilities would be to use Cassini. This is a web server that acts as a host for the ASP.Net runtime. You can host Cassini in a Windows application or a Windows Service. In this scenario you do not have to rewrite the web app and the web service.
Most other solutions do require a rewrite of both your web app and your web service. Depending on the way you have written the existing app you can reuse more or less code.
Have you considered HTML5 with application cache and offline storage?
If you hope to create an "offline" version of your package your biggest issue by far will be the need to install your site into a local copy of IIS (registering a virtual directory, etc.). I pursued this briefly a few years ago and gave up in frustration. It can be done: a number of software vendors such as DevExpress do this so you have local copies of their demonstration projects. Indeed, I was able to do this. The problem was the classic "it works on my computer" syndrome. There was simply no way to guarantee that most of my end-users had anywhere near the technical proficiency to make this work.
Thus, I would strongly recommend that you not pursue this path unless you have very technically proficient users and a huge support staff.
But there is one more very important question: did you abstract all data access code to a DAL? If not, then you have a lot of work to do in managing data access as well.
Update: user "Rine" has recommended Cassini. I just wanted to let you know that I pursued Cassini and another 3rd-party web server as well. I think that there are licensing issues with Cassini but may be wrong - it has been awhile. However, I do distinctly remember running into barrier after barrier with this approach and very little documentation to help me out.
if you want a web application run offline, you need a webserver (IIS for ASP) bound to the localhost (127.0.0.1) address. After this so can access your web application by typing http://127.0.0.1/ in your web browser the same way as you do online.
If your AJAX relies on XMLHttpRequest's, you can:
Make the static versions of XML's you get over XMLHttpRequest and put then into a folder on disk.
Rewrite your XMLHttpRequest URL's so that they point to files on disk.
Rewrite your XMLHttpRequest's so that they don't check status (it's always 0 for the file:// protocol.
All JScript works on file:// pages as well as on http:// ones.
Of course it's not the best way to develop static pages, but it may save you some time on rewriting.
I havent come across any framework specifically built for asp.net like the ones available for PHP or RoR.
Here is a good article by Steven to get you started with HTML 5 and ASP.Net Creating HTML 5 Offline application
Obviously the offline version will not be able to talk to the server, but it does need to talk to something!
Enter HTML5 LocalStorage. It works like a database and enables you to put data on your client. Indeed you have to rework parts of your code in javascript and transmit it to the client, but then it would work offline.
Local Storage works like this:
- Setter: window.localStorage.setItem(KEY, VALUE)
- Getter: window.localStorage.getItem(KEY)
- Remove: window.localStorage.removeItem(KEY)
To get the main page working offline you need to create a manifest. This is used to store complete sites on the client. Please refer to this for more information about manifests:
http://diveintohtml5.info/offline.html
You want to build a web application to work offline?? It can't be done.
You could split the interface code from the rest (in diferent dlls) and create a windows application to mimic the behaviour of your web application. This way you have 2 distinct user interfaces but the same code for business rules and data access.
I don't really see any other way...

Resources