physicalDirectory and Redirection in azure - azure

My .csdef file:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="SimpleAzure1.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
<WebRole name="SimpleAzure1" vmsize="Small">
<Sites>
<Site name="Web2" physicalDirectory="../../../SimpleAzure1/">
<Bindings>
<Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="SimpleAzure1.cloudapp.net" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint2" protocol="http" port="80"></InputEndpoint>
</Endpoints>
<Imports>
<Import moduleName="Diagnostics" />
</Imports>
</WebRole>
</ServiceDefinition>
And my project structure is:
I define physicalDirectory="../../../SimpleAzure1/" in .csdef but when I create a package and deploy in azure physicalDirectory's default.aspx page is not loaded.Its load a page from asp.net wepappliaction.When I define physicalDirectory in .csdef file why asp.net wepappliaction page is loading.Am I missing some thing.Thanks.

Concur with knightpfhor - if you only have one site, remove the physical directory and host header.
If you are using more than one site in the role, deployment changed from SDK 1.7 to 1.8:
The physicalDirectory attribute path is relative to the directory in
which the target Service Definition file resides when packaged. In
previous versions this file was located within the root project
directory. In this version, by default, this file is located in the
project output directory. You may need to update the relative path to
reflect the new location of the target Service Definition file.
To see where the files are actually located, enable remote access and RDP into the instance. Check the Physical Directory specified in IIS and then confirm that path exists and references the installed website, typically E:\sitesroot\0 or F:\sitesroot\0

If you only have one site in your web role then there is no need to specify the physical directory or the host header.I suspect the builder is taking some short cuts. Try removing the site from the role and adding it again and this time leave the defaults.

Related

Deleting an application directory from iss with appcmd and reports identifer needed

I have somehow created an application directory with the appcmd command that has hidden all of my applications directory.
I can do a list of my application directories with appcmd and I think the last directory I created has the file path with a double quote character at the end, so I'm trying to delete that one application directory.
When I run the command appcmd list app I get the list of my application directories which do not show up in the UI.
Here is a list of the last three:
APP "Default Web Site/hotele/language90" (applicationPool:DefaultAppPool)
APP "Default Web Site/hotele/business900" (applicationPool:DefaultAppPool)
APP "Default Web Site/hotelk" (applicationPool:DefaultAppPool)
When I attempt to delete the hotelk one which is the one I think is messing up all of the directories I try running this command:
appcmd delete app "Default Web Site"/"hotelk"
It gives me this error:
message:Must use exact identifier for APP object with verb DELETE.
I've tried many different combinations of this delete syntax and not use what is meant by the identifier?
I can't delete this application directory with the IIS UI since when I go there all of my application directories do not appear.
First of all try to delete the app from Internet Information Services (IIS) Manager GUI.
If you can't find your app there you can manually edit IIS configuration file (ApplicationHost.config):
Go to path %windir%\system32\inetsrv\config
Create a backup of ApplicationHost.config file
Open ApplicationHost.config file
Search the name of the app you want to remove (ex. hotelk). You should find it in the <sites> section:
<sites>
<site name="Default Web Site" id="1">
...
</site>
<site name="hotelk"" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\test" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
</bindings>
</site>
<siteDefaults>
...
</siteDefaults>
<applicationDefaults applicationPool="DefaultAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
remove the entire node containing the site you want to delete
save the file
If you want delete the app using appcmd this is the right command:
appcmd delete app "Default Web Site/hotelk"

Azure Cloud Service Virtual Directory Issue

I am trying to add virtual directory in WebRole1 of my could service using following directive in csdf file...
<Site name="Web">
<VirtualDirectory name="aspnet_client" physicalDirectory="..\..\..\crazureresource\aspnet_client" />
<VirtualDirectory name="Downloads" physicalDirectory="..\..\..\crazureresource\Downloads" />
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
The development machine directory structure is...
..\CR1\CR1\ProjectFiles
..\CR1\crazureresource\aspnet_client
..\CR1\crazureresource\Downloads
The azure webrole1 directory structure is...
siteroot\0\website-deployed-files
siteroot\crazureresource\aspnet_client
siteroot\crazureresource\Downloads
The package gets published successfully; instance is also updated but WebRole's status is either 'Busy' or 'Restarting'. The website is not deployed on the webrole. If I shorten the path of virtual directory to
> ..\..\..\aspnet_clients and ..\..\..\Downloads
It works (the deployment); but the contents are modified on azure cloud service. In place of these physical folders a new folder by the name of 1 and 2 are created. Inside these two replacement folders, config files are placed by system - the original files are replaced. While at the same time in IIS, a valid link shows for virtual directory.
I am not able to access the resources from virtual directory due to this!
For Azure this is the valid directory structure
siteroot\0\website-deployed-files
siteroot\1\ ----name it as aspnet_client
siteroot\2\ ----name it as Downloads
and the contents will be availble like below urls
www.exapmple.com --- default (website-deployed-files)
www.exapmple.com/aspnet_client --contents of (aspnet_client)
www.exapmple.com/Downloads --contents of Downloads
you can update you local directroy structure to match.
for the path in csdef file
physicalDirectory="..\..\..\crazureresource\Downloads"
This is the path from /bin directory of Azure project to the Other projects Downloads.csproj directory.
Refer this for updating the Path properly in your csdef file
Hope this helps.

CSPACK sitePhysicalDirectories being ignored?

Yet another issue with CSPACK...
I have a service definition file like this:
<ServiceDefinition name="core-eur" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2014-01.2.3">
<LoadBalancerProbes>
<LoadBalancerProbe name="discovery.probe" protocol="http" path="/HealthMonitoring" port="80" intervalInSeconds="8" timeoutInSeconds="16" />
</LoadBalancerProbes>
<WebRole name="Discovery.UI" vmsize="ExtraSmall" enableNativeCodeExecution="false">
<Startup>
<Task commandLine="startup\CreateCustomEventSource.cmd" executionContext="elevated" taskType="simple" />
</Startup>
<Sites>
<Site name="main">
<Bindings>
<Binding name="https.root" endpointName="https" hostHeader="testingblah.com" />
</Site>
<Site name="api" physicalDirectory="..\..\..\catalog\Catalog.Search.API">
<Bindings>
<Binding name="https.root" endpointName="https" hostHeader="api.testingblah.com" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="http" protocol="http" port="80" loadBalancerProbe="discovery.probe" />
<InputEndpoint name="https" protocol="https" port="443" certificate="bibliothecatest.com" />
</Endpoints>
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="Diagnostics" />
<Import moduleName="RemoteForwarder" />
</Imports>
<Certificates>
<Certificate name="testingblah.com" storeLocation="LocalMachine" storeName="CA" />
</Certificates>
</WebRole>
The key points are the Sites "main" and "api". I've not included the physical directory because, as expected, when they are put in and point to the project files in the solution, the "api" site is not packaged correctly as the Visual Studio package process will only package the first site (i.e. "api" has all the un-transformed .config files and .cs files in it's packaged folder whereas "main" does not - it is correctly packaged, but this is a known issue so I'm not going to complain too much about this.
So to workaround it, for my build server I want to introduce a CSPACK step to do this properly. I pre-build the "main" and "api" web sites using MSDEPLOY to a temporary location, and then use CSPACK to create the package file.
This fails every time with "CloudService077: Need to specify the physical directory for the virtual path 'main/ of role "Discovery.UI". However, I am including the /sitePhysicalDirectories value in CSPACK, i.e.
cspack %root%\ServiceDefinition.csdef ^
/role:Discovery.UI;%compiled%\discovery\Discovery.UI\ ^
/sitePhysicalDirectories:Discovery.UI;main;%compiled%\discovery\Discovery.UI\ ^
/sitePhysicalDirectories:Discovery.UI;api;%compiled%\catalog\Catalog.Search.Api\ ^
/rolePropertiesFile:Discovery.UI;Properties.txt ^
/out:%output% /copyOnly
If I put the sitePhysicalDirectories attribute back into the ServiceDefinition file, and point it to the project directory location in Visual Studio (e.g.)
<Site name="main" physicalDirectory="..\..\..\discovery\Discovery.UI">
then CSPACK fails with CloudServices079: Cannot find the physical directory "nnn" for virtual path main/
This is despite the fact that the CSPACK command line /sitePhysicalDirectories are correct. What's happening is that CSPACK is taking the ServiceDefinition values, applying the relative path values and pointing to completely the wrong place.
If I update ServiceDefinition to use the same physical location (e.g. C:\....\nnnn as opposed to "......\nnnn" that I'm passing in the CSPACK command line, everything works !
So it seems that CSPACK ignores parameters and cannot override values, which isn't what I really need. Is this correct or should I be passing something else to CSPACK?
Azure SDK 2.3
I know this is long after the fact, but I also had endless trouble with CSPACK. It is basically impossible to find any useful information on it.
What I've found, is that if you don't provide the arguments properly, you get all sorts of "Cannot find the physical directory..." and "Need to specify the physical directory..." errors, sometimes with directories that you did not provide.
Thanks to this powershell script I was able to execute it using the correct format and learned these things:
1. You must specify the /role: argument. The /sites argument is an extension of the role you specify here.
2. Put all your sites in one /sites argument or in one /sitePhysicalDirectories argument. I use the /sites argument for my builds.
For the above example, I would try:
cspack %root%\ServiceDefinition.csdef
/role:Discovery.UI;%compiled%\discovery\Discovery.UI\ /sites:Discovery.UI;main;%compiled%\discovery\Discovery.UI\;api;%compiled%\catalog\Catalog.Search.Api\ /rolePropertiesFile:Discovery.UI;Properties.txt
/out:%output% /copyOnly

FailedRequestTracing module failed to create directory in azure

I try to run my Azure site using SDK1.8 locally.I got a following error in event viewer.
'\\?\C:\Users\Shree\AppData\Local\dftmp\Resources\eb8b9108-45c8-4933-8e47-50be3a36cbd9\directory\DiagnosticStore\FailedReqLogFiles\Web\deployment18(154).App.Azure.App_IN_0_Web\'. No logs will be generated until this condition is corrected......
In browser I got a error:
403 - Forbidden: Access is denied.
In .csdef file i use physicalDirectory like this.
<Site name="Web" physicalDirectory="..\..\..\dec31">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
Thanks.
I solve this problem. Its not a problem about .csdef file.Its a problem in my web.config
file.There is a frame work conflict.So I modify the web.config and its work.

IISExpress Log File Location

IISExpress writes log and configuration data to pre-determined location out of the box.
The directory is an "IISExpress" directory stored in a user's Documents directory.
In the directory is stored the following folders files underneath.
Config
Logs
TraceLogFiles
The location of my home directory is on a network share, determined by group policy
Currently we are encountering scenarios where visual studio locks up when stopping debugging Silverlight applications using IIS Express.
I was looking to change the location for the log & configuration data for IISExpress to see if this fixes the problem of visual studio locking up. Is it possible to change the default location of log & config files ?
1 . By default applicationhost.config file defines following two log file locations. Here IIS_USER_HOME would be expanded as %userprofile%\documents\IISExpress\.
<siteDefaults>
<logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
<traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" />
</siteDefaults>
You can update above directory paths to change the log file locations.
2 . If you are running IIS Express from command line, you can use '/config' switch to provide configuration file of your choice. Following link may help you http://learn.iis.net/page.aspx/870/running-iis-express-from-the-command-line/
http://www.iis.net/configreference/system.applicationhost/sites/sitedefaults
<configuration>
<system.applicationHost>
<sites>
<siteDefaults>
<logFile
logFormat="W3C"
directory="%SystemDrive%\inetpub\logs\LogFiles"
enabled="true"
/>
<traceFailedRequestsLogging
enabled="true"
directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles"
maxLogFiles="20"
/>
<limits connectionTimeout="00:01:00" />
<ftpServer serverAutoStart="true" />
<bindings>
<binding
protocol="http"
bindingInformation="127.0.0.1:8080:"
/>
</bindings>
</siteDefaults>
</sites>
</system.applicationHost>
</configuration>
I find web.config documentation is a messy. It is therefore better to provide a complete parent history than a floating snippet with the expectation that the reader naturally knows where it goes.
By default it will be in:
C:\Users\ user_name \Documents\IISExpress\Logs\

Resources