Setting up Content Delivery Webserver Root Locations for Tridion - tridion

Problem Description:
Publishing JSP pages work with the following for broker.config.
<Publications DefaultRootLocation="/apps/tridion/wwwroot"
DefaultRootDataLocation="/apps/tridion/wwwroot/data">
Publication pages and directories (based on structure groups) will publish under the wwwroot directory.
I changed the root location for for pages to the following (no longer using "/apps/tridion/wwwroot").
<Publications
DefaultRootLocation="/apps/ekibemobile/jboss-eap-5.1.0/jboss-eap-5.1/jboss-as/server/default/deploy/MobileTermsConditions.war/basic"
DefaultRootDataLocation="/apps/ekibemobile/jboss-eap-5.1.0/jboss-eap-5.1/jboss-as/server/default/deploy/MobileTermsConditions.war/basic/data"
>
Publishing now returns:
A processing error occurred processing a transport package Could not deploy page
[Page id=tcm:493-637128-64 Title=010. Privacy Policy],
IO error creating new page, No such file or directory, No such file or
directory, IO error creating new page, No such file or directory, No
such file or directory
I confirmed the required permission on the above folder on the Linux webserver. I also tried the following in the node of broker.config
<Publication Id="493"
DocumentRoot="/apps/ekibemobile/jboss-eap-5.1.0/jboss-eap-5.1/jboss-as/server/default/deploy/MobileTermsConditions.war/basic"
DataRoot="/apps/ekibemobile/jboss-eap-5.1.0/jboss-eap-5.1/jboss-as/server/default/deploy/MobileTermsConditions.war"
/>
I get the same error with this config. Please suggest what I'm missing!

Some suggestions:
Double check that the directories you've specified do exist.
Ensure that the user running the deployer process has access to write to the directory
Edit both the deployer and broker configs to enable debug logging. Restart everything and repeat your test, then check the logs.
Note that the locations you have specified are configured in the broker configuration, but the deployer process is the relevant one because it will instantiate a broker.

Your best bet would be to make the changes on the deployer.config (cd_deployer_config.xml) on the Tridion Presentation Server.

Related

Receiving IIS 500 error for static files when installed with Sitecore 7.2

Hopefully somebody can point me in the direction of a solution for this particular problem.
The Scenario (Sitecore 7.2 rev 140526)
I have a static 'index.html' file hosted in a folder (let us call it 'test') inside my Sitecore web application.
If I access the index.html file directly via a web browser, everything loads correctly.
However, if I access the directory (i.e. http://myweb.site/test/) I receive a 500 error.
The error message is binding to the default document correctly, as evidenced by the details in the error message.
UPDATE: I have been able to reproduce with a fresh 7.2 instance with the NTTData CDN Connector configuration file in place.
What I have tried already
To prevent Sitecore from serving it's 404, I updated IgnoreUrlPrefixes setting
The index.html file name is in the list of default documents for the site (and folder)
In order to bypass the ExtensionlessUrl handler for .NET and resolve a 404 error, I have re-ordered the Handler Mappings to place the StaticFile handler before the ExtensionlessUrlHandler handlers.
Running on the same IIS instance, I setup a separate site with the same files and the default document loading worked correctly.
I have verified that the folder in IIS has Anonymous Authentication enabled
I have tried providing the Everyone group with full control to the folder in NTFS permissions
I have validated that the folder and folder parents are not marked as 'Hidden'.
IIS Failed request tracing did not provide much, but I did notice the Sitecore Rewrite module changing the URL a few times in the handler pipelines to append a "?". Subsequent calls by the static module did not show any warnings or errors though.
I have reproduced with a blank Sitecore 7.2 instance by adding the NTTData CDN Connector configuration file
The error I am seeing
HTTP Error 500.0 - Internal Server Error
Module: DefaultDocumentModule
Notification: ExecuteRequestHandler
Handler: StaticFile
Error Code: 0x800703e9
Requested URL: http://myweb.site/test/index.html
Physical Path: C:\MyWebsite\test\index.html
Logon Method: Anonymous
Logon User: Anonymous
Any thoughts?
While I have not figured out why the CDN connector interferes with the loading of the static files, I have been able to resolve the issue using an approach from this answer.
Essentially, by running the subfolder as an application with a classic mode application pool and putting the static file handler mapping first, the CDN connector doesn't execute and everything works great.
I think I found the cause of this.
There is a processor that is patched just before the FilterUrlExtensions processor called CDNInterceptPipeline which attempts to convert the following via a url rewrite:
/path/to/file.ext!cf!a=1!b=2 to /path/to/file.ext?a=1&b=2.
This caused all number of problems in our solution, including the one you stated above, and for the CDN set up we're using we didn't even need it. It might be that you can safely remove it from the SitecoreCDN.config as we did.
Source: https://github.com/NTTDATA/SitecoreCDN/blob/master/Code/Pipelines/CDNInterceptPipeline.cs
I accidentally had a web.config in the folder. Deleted that. Everything worked.

iis7 / asp.net not showing modification of a file

I have currently moved my asp.net 4.0 web application onto IIS7 (windows 2008 server). I used a test folder to hold files from a directory on the localhost machine, however; when I moved the aspx file over and changed the code(on the server), the application keeps throwing this error
Could not find a part of the path 'C:\Users\***\Desktop\TestFolder\'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\****\Desktop\TestFolder\'.
I only have two functions that deal with directories and neither function points to that test directory anymore.
private int checkForFileNumbers()
{
string url = "c:/***/realfolder";
DirectoryInfo directory = new DirectoryInfo(url);
return directory.GetFiles().Length;
}
private void checkForFiles()
{
string url = "c:/***/realfolder";
DirectoryInfo dir = new DirectoryInfo(url);
foreach (FileInfo files in dir.GetFiles())
{
FileDropDownList.Items.Add(files.Name);
}
}
I have tried commenting everything in this aspx file out, only to find that this problem still occurs. I performed the issrestart from the cmd line and nothing changed. Any help would be appreciated.
This is a deployment problem. Your error message is clearly out of sync with your current code. The actual code that is being run from IIS must be coming from an out-of-date binary. As a starting point, I would delete all DLLs in your bin directory on the server and redeploy fresh DLLs. The may also require you to refresh your aspx files depending on what kind of project type you're using.
Once you get this sorted out, I would take another look at how you are deploying updates to your site. Visual Studio and IIS 7 offer some neat deployment options if you want to go that way. Also, you could deploy via Git or SVN. But deployment by manual replacing single files is going to lead you to the type of trouble you are currently experiencing.
If realFolder directory exists under root of your web-app or itself is root then use Server.MapPath method to get real path of virtual folder.
For instance,
String rootPath=Server.MapPath("~"); // It will return real path of current web-app's root.
//OR - In case if want use Server property from separate code file.
String rootPath=HttpContext.Current.Server.MapPath("~/testFolder");
Since you're not referencing the path in your code, it's probably either in one of your config files, HttpModules, Global.asax, or perhaps a DLL.
What other components are you using?
Before moving it to a server, have you tried running the site under IIS on your local machine? Maybe attach a debugger and see where the error is thrown?
Oh, FWIW, the IIS AppPool identity will need to have read permission for your C:/***/whatever folder.

Error in Web.Config

Please tell me what is use of:
<add assembly="*"/>
because of this i am getting error:
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: Exception of type 'System.OutOfMemoryException' was thrown.
Source File: C:\Windows\Microsoft.NET\Framework\v2.0.50727\Config\web.config
Thanks
As per MSDN:
you can specify the asterisk (*) wildcard character to add every assembly within the private assembly cache for the application, which is located either in the \bin subdirectory of an application or in the.NET Framework installation directory (%systemroot%\Microsoft.NET\Framework\version)
Since you most likely don't need to add all assemblies to your application I would suggest adding only the ones you are actually using and leave the <add assembly="*" /> part out, which should solve your problem.
The Indexing Service may cause such a problem. If Indexing Service is running on your computer then, you should exlude it from indexing directories:
Open Computer Management from Administrative Tools on your computer.
Navigate to Indexing Service under Services and Applications.
Select "Web" under Indexing Service.
On the right pane Right Click mouse and chose New > Directory.
Add the paths where your web pages are (Ex: c:\inetpub).
Repeat this for all virtual directories not under inetpub.

I can't watch videos I upload to drupal

I can upload a video to my drupal instance, but when I try to view the video I don't have rights to do so. I discovered that the IIS_IUSR doesn't have Read & Execute rights on the video even though the IIS_IUSR does on the containing directory.
IIS_IUSR has Read & Execute, List folder contents, and Read rights to the directory where files are uploaded to. However when I look at the rights of the uploaded video file (something.mp4), IIS_IUSR only has List folder/read data rights and Windows says these are inherited from the parent object. Include inheritable permissions from the object's parent option is checked.
Here's some more information that may be helpful.
If I try to access a video directly via a url I get this error:
HTTP Error 500.50 - URL Rewrite Module Error.
The page cannot be displayed because an internal server error has occurred.
Module RewriteModule
Notification BeginRequest
Handler StaticFile
Error Code 0x80070005
This seems like a configuration issue someplace, i.e. Drupal, IIS, or Windows.
Any thoughts.
My environment:
Windows 2008 R2
IIS 7.5
Drupal 6.19
MySQL 5.1.49
PHP 5.2.14
Someone requested that I post my .htaccess. There are several for the site, but here is the one for the files directory where the videos are uploaded to.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
Options None
Options +FollowSymLinks
But isn't .htaccess only used with Apache? I'm using IIS, so is the .htaccess even used?
Got the videos to work by changing the temp upload directory that Windows uploads files to before they're moved the web directory. By default Windows uses C:\Windows\Temp and in my case the permissions set on the file were kept when they were moved from Temp to the web directory. I didn't want to set IIS_IUSR permissions on this folder, so I created a different directory right under the C drive and gave it IIS_IUSR read/execute perms. Then I updated my php.ini file to point to this new directory. All's working well now. I think the key was to put this temporary directory outside of Inetpub because I tried this same set up but with the temp directory within Inetpub and it didn't work.

Web Service fails when referencing it in another site in IIS

I've got a C# 3.5 web service that works fine when its accessed at http://domain/foo/bar/WS.asmx
The /foo/bar part could change in the future so I want to give people a more stable URL that I could update without requiring any changes from them. I created a site in IIS and set it's Home Directory to where WS.asmx is. Now when I try to access it from http://domain2/WS.asmx, I get:
Description: An error occurred during
the parsing of a resource required to
service this request. Please review
the following specific parse error
details and modify your source file
appropriately.
Parser Error Message: Could not create
type 'Namespace.WS'.
Source Error: Line 1: <%# WebService
Language="C#" CodeBehind="WS.asmx.cs"
Class="Namespace.WS" %>
The assemblies in both cases are at http://domain/bin but when I come from domain2 it doesn't seem to know where to find the \bin that is 3 folders up in the file system.
The namespace/classes are more descriptive than that, I just made them basic for the purposes of this question.
Sorry, AFAIK you can't pull DLLs from explicit file paths outside the root of your website. You generally have two choices:
1) use the /bin directory of the current app (make a copy of the other app's /bin)
2) put the DLL into the Global Assembly Cache (GAC)
BTW, this has been asked in a few other spots on SO, like here.
One thing you could do, if your /bin DLLs are only used inside /foo/bar/, is to convert into an IIS application, and then move the DLLs into a new /foo/bar/bin directory. Then you'd only have one copy of the DLL's to manage.

Resources