Visual Studio allows us to publish our web site on a web server in the lan (intranet) or on an external web server, for example hosted on Azure.
In the situation of a server on the lan, you have created, through IIS, a site that resides on a certain directory, empty now, on a web server. Otherwise you have already prepared an external site.
In Visual Studio, in the right panel called “Solution Explorer” we click with the right mouse button on our project and select the “Publish” option. The “Publish” window: there are, on the left, the fourth step to do for publication.
Profile
Go to the drop down menu at the top center and choose “New Custom Profile”. Invent the name of this profile. Once inserted, you will go directly to the next step.
Connection with “Web Deploy”
Publish Metod : choose “Web Deploy” whether you publish your site on a server on the lan, both in an external server.
Server (web server in lan) : http://myserver
Server (external, es Azure): mysite.azurewebsites.net:443
Site name (web server in lan) : name of the directory in which it is to be the site
Site name (external, es Azure) : es. mysite
User Name e Password (web server in lan) : put a administrator user of the server machine. If the machine is in a domain, use a local administrator.
User Name e Password (esterno) : ftp user
Destination Url : web site address. es : http://……………..
Settings
In this tab the program reads from we.config the database connection strings. If your target site database is different, you need to specify the right connection. The publication will replace the target strings to the source strings. We will see later that there is a method to insert in the web.config further changes to the web.config of origin.
Preview
Here you can see the files that will be sent to the destination that is the new files or changed since the last submission. And you can publish your site!
web.config configuration
Our destination website may have other special features, specified in web.config, different from the starting site, as well as database connection strings. We can create a specific web.config for each deployment.
Position the mouse on the project. In the “Properties”, find the directory “PublishProfiles” which contains previously saved data. Here you will find a .pubxml files for each of the deployment that you have created. Go to the file you need, push the right mouse button and select “Add Config Transform”.
If you go in the web.config you will see that there is an additional file named as your deployment. Let’s see some examples of what you can do with the tag that you set within the <configuration>
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
this stringa substitutes (xdt:Transform=”SetAttributes”) the attributes of the tag named (xdt:Locator=”Match(name)) “MyDB” with these.
<appSettings><add key="myemail" value="info@contoso.com" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/></appSettings>
this stringa substitutes the attributes (xdt:Transform=”SetAttributes”) of the tag with key (xdt:Locator=”Match(key)) “myemai” with these.
<system.net>
<mailSettings xdt:Transform="Replace">
<smtp deliveryMethod="Network" ........................
</smtp>
</mailSettings>
</system.net>
This string transform (xdt:Transform=”Replace”) entire tag mailSettings and its content.