Executing windows azure web job - c#

I create a small .exe that updates some tables in my database also create in azure, but all the times that I upload the .zip file required shows this error
Reading blogs I realized that some people are using the windows azure web job sdk, to upload their projects, it is worth to point it out that this library doesn't have a version for Visual Studio 2010, so it can't be used.
Is the use of the aforementioned sdk the only way to create and use console application web jobs?

Usually you get the failed to upload job error if the zip file does not have the job exe in the root folder.
This often happens when you zip the Debug/Release folder instead of its contents.
You don't have to use the Azure WebJobs SDK for your job. Any console application will work.

sdk the only way ...
No, WebJobs can run without the cloud SDK. To quote Hanselman
You don't have to use the WebJobs SDK with the WebJobs feature of
Windows Azure Web Sites.
As to what the exact problem is...with VS2010 and Azure that is hard to say with what you have presented.

WebJobs, since it sits on top of the Azure Web Sites service, it supports everything the Web Sites support. Including: python, php, bash, powershell, node.js, .net, cmd, bat, etc...

Related

Azure App Services isn't available

I've been trying to use Azure as Mobile App service and in the tutorial it is given to choose this :
Whilst when i try to follow it shows this :
Can anyone help ? Thank you :)
The Azure Visual Studio tooling, however, should be upgraded to version 2.8.1 or later...
https://azure.microsoft.com/en-us/downloads/
https://azure.microsoft.com/en-us/documentation/articles/app-service-api-whats-changed/
As Thiago suggested, you will have to install the latest Azure SDK to get the option.
If not, then you can select the Import option. This will require you to provide the publishsettings file.
You can download the publishsettings file from the Azure Portal. Here is a sample image: http://i.stack.imgur.com/YV2OQ.jpg
Once you have imported it, the IDE will pick the deployment endpoints from the file and you will be able to publish the App.
NOTE: Mobile Apps have the same deployment as the Web Apps. The IDE doesn't have the tooling to pick Mobile APPS from the subscription. Until then you will have to use the Import option in the VS deployment wizard.

Using Ghostscript.Net on an ASP.NET Azure Website

I am using Ghostscript.NET in order to convert a PDF page into a jpg. This all works fine when I run it locally, but when I publish it to an Azure website then I get the error:
"This managed library is running under 32-bit process and requires 32-bit Ghostscript native library installation on this machine! To download proper Ghostscript native library please visit: http://www.ghostscript.com/download/gsdnld.html"
Obviously I can't just install Ghostscript on the server that the Azure Website is running on, I don't have access to do that. Is there any way that I can include a Ghostscript library in the publishing profile, and have Ghostscript.NET read from that?
Alternatively, is there any package that would allow me to convert a PDF page to a jpg thumbnail on an ASP.NET server without using Ghostscript at all? I have also tried GhostScriptSharp and had no luck with that either.
You could try to install native ghostscript library to your local machine and get gsdll32.dll (or gsdll64.dll if you are running in x64 bit environment) which you can deploy to your server along with the other dlls.
Take a look at this example how to tell Ghostscript.NET where to search for the native ghostscript library dll: https://github.com/jhabjan/Ghostscript.NET/blob/master/Ghostscript.NET.Samples/Samples/CustomGsdllLocationSample.cs
You have a few options.
Host your website as an Azure Cloud Service Web Role. This allows you to react to the server being created and you can run installation programs (if you can automate them) to prep the machine.
Split this functionality out into an Azure Cloud Service Worker Role (where you can do the same machine prep) and have it respond to an Azure Queue item. This way your website remains pretty much as is.
Be careful though, Cloud Services can get expensive if they are just sitting there doing nothing because its still running on a VM. You can have your Cloud Service scale based on the queue having items or not.

Service Fabric deployment in the cloud

We are switching to an actor based architecture for a subsystem in our product (We use C#), and we are considering either Akka.NET or Service Fabric actors. We have experience with Akka and Akka Clusters (in Scala), but the Service Fabric actors suits our purpose perfectly. It is, however, really difficult to find any material about deployment.
Is it possible at all to deploy on Azure at the moment (or can you join any preview programmes)? I can't find any indications of when a preview will be available, if it is not possible already.
Azure deployment is not available yet. It will be launched as a preview later this year.
Update: Service Fabric is now available in public preview.
Update: Microsoft now provides Service Fabric Continuous Integration documentation
I have continuous delivery running w/the development SDK (all nodes on one VM) like this:
push to github.com
github.com tells Visual Studio Online to trigger a build.
A custom build definition with a custom ‪#PowerShell‬ script step who 7z’s the build artifacts and curl’s the file to the Windows Server 2012 R2 Azure VM instance
IIS is loaded on the VM to host basic auth over TLS, & the WebDav module simply for this upload (easier to configure than FTP or WebRM on Azure, for sure)
I wrote custom open-source code who monitors for a trigger file (https://github.com/corlib/trigger) and invokes a command, configured to invoke a custom deployment script. (very early, but functional for this purpose)
The deployment script decompresses the archive, loads the ServiceFabric application manifest to obtain the application type version. This version is used to deploy the application package to a unique location in the cluster, register it, and then start a monitored application upgrade (w/rollback to previous version on failure)

Deploying a web site to azure as a package

I'm starting an ASP.net web project that will be hosted on Azure, but I'm not certain whether to develop the project as a regular ASP.net application and deploy it as a Web Site on Azure, or to develop it as a Cloud Application with a Web Role.
The project's nature is that of a web site (simple database back-end), but the question is one of deployment. We aim to build versions of the application and then deploy to staging and production environments, meaning the output of a build should result in a single package (similar to what's described in msdn).
There's plenty of information on how to create a service package to publish a cloud service, but articles on publishing a web site to azure follow a 'web deployment' scenario, where deployment is done via Visual Studio (subscription file from Azure etc).
Is there a way to deploy a web site to azure as a package? Or are tools like Visual Studio needed for a web deploy? If so, then is composing the project as a Cloud service with only a web role the correct choice?
I posted a comment under the question, regarding differences between Cloud Service & Web Site, but to answer your question about packaging: Cloud Services & Web Sites take two different approaches to deployment, and there's not really "works for both" packaging:
Web Sites are designed to accept your code deployment from either a source code repository. The idea is that you have a labeled version of your code, and push it out from TFS, git, Bitbucket, etc. You can also push your code up with ftp, or drop it into a dropbox folder. Because Web Sites run in IIS, and because you don't have any control over the VM farm running your Web Sites, you cannot push up startup scripts as you can with Cloud Services; you cannot install registry updates, COM objects, msi's...
Cloud Services are designed around a stateless VM model. Every time you scale out (add instances), a baseline Windows Server VM is spun up, and the contents of your deployment package is copied to the new VM instance and executed. This includes startup scripts, installers, etc. Since you have admin-level access to each VM, you can configure it as you need to, from your startup scripts / OnStart(). Definitions for each role are combined into a single deployment package. To update one or more roles, you need to redeploy the package.
Web Sites have no tooling pre-requisites, while Cloud Services require Visual Studio or Eclipse to help you manage the deployment package. You can also use PowerShell and Visual Studio command line tools to build the package, as #Ben Robinson mentioned in the comments above. You can also use PowerShell to create and administer Web Sites. Both Cloud Services and Web Sites provide Staging and Production slots.
You can't push a deployment package to Web Sites.
David's answer does a great job covering the Cloud Services option. However, I believe the Azure Website option is well-suited to your needs. You don't have to deploy using Visual Studio. Instead, you can create a publish profile in Visual Studio that creates a Web Deploy Package which is simply a ZIP file that can be published at a later time using command-line tools, no Visual Studio required. It also generates a .deploy.cmd file that you can run to deploy to a remote server, and a SetParameters.xml file with parameters such as connection string that you can modify for your target deployment environment. The .deploy.cmd file calls msdeploy.exe which does the actual deployment.
See this for more details on Web Deploy command-line deployment. There's also a ton of information on MSDeploy and its package system on Sayed Ibrahim Hashimi's blog.
If you want to be able to change files directly in the web application then it is best to use an Azure Web App, because you can access those through FTP.
However an Azure Cloud Service does not provide FTP Access, at least not a useful one that would allow you to use an FTP Client to upload files. A Cloud Service is where you do not want to be bothered too much with much of the details of hosting a web application. While an Azure Web App does much of the same thing, it also allows you to have FTP access and direct access to the files post-deployment.

Socket Server in Amazon Elastic Beanstalk

Currently, I have a socket server, that listens to incoming connections on two ports (e.g. 7777 and 7778) and replies to them. The data is stored in an RDS environment, part of a bigger Elastic Beanstalk environment that accesses the same data. The socket server is implemented as a Windows service. So far, so good. It works.
However, I am asking myself, whether it's possible to have the socket server also within the same (or possibly another) Elastic Beanstalk environment, but so far, I haven't found any way to do that.
My goals are
to have a far simpler deployment procedure, as in the productive environment, I need the socket servers to be behind a load balancer and don't want to deploy a windows service on each instance.
to have only one environment to deploy to, so that I won't have to deploy (manually or automatically) each time I have a change in the DAL.
The socket server does not need to be implemented as a Windows service, it just is now.
Everything is implemented in C#. Any help is appreciated.
I think, I got this covered. However, I couldn't deploy the Windows Service without errors stand-alone, but only as part of a Web application. Not a real problem in my scenario, though.
I have two projects for this scenario; a Web Application and a Windows Service application.
On the build server, I create a ZIP file of the Windows Service
executables (using zip.exe)
On the build server, I upload the ZIP file to an S3 bucket (using s3.exe)
On the project of the web application, I create a .ebextensions directory
In the .ebextensions directory, I have a whatever.config file that
Takes the ZIP file from S3 and unpacks it onto the C-Drive in my preferred directory
Calls a batch file (part of the ZIP file) that uninstalls and reinstalls the Windows Service with the InstallUtil.exe utility (part of the .Net framework)
In my nightly builds (of the complete solution), I deploy the web application to Elastic Beanstalk using awsdeploy.exe.
Therefore, I point to a configuration.txt file in a builds directory of my web application.
You can generate such a build file with a manual Elastic Beanstalk deployment from Visual Studio; but they are quite easy after a while.
What happens now, is that in my Nightly Builds the Web application is deployed to the Elastic Beanstalk environment; the deployment will recognize that there is a configuration and will execute the steps mentioned below step 4 above. As the Nightly Build created and uploaded the ZIP file of the Windows Service before that, I am sure that I will install the most recent Windows Service.
My only problem now is that the Windows Service does not always install itself because of the infamous marked for deletion error. But that's another story.
I hope this helps somebody. If anyone has a suggestion to simplify this, he's welcome to add a comment.

Categories