views:

380

answers:

2

I have created a web page (ASP.NET) that includes a stylesheet to mimic Dynamics CRM styles. This is to be used in a CRM IFRAME (within a form).

The stylesheet is referenced as follows:

<head id="Head1" runat="server">
    <link href="Styles.css" rel="stylesheet" type="text/css" />
</head>

When I load the page in Visual Studio, all is well. When I load it in CRM, none of the styles are shown and no images are displayed. If I browse directly to the image, I get a 404 error. However, the pages function correctly.

I have set read permissions for "Everyone" on the server to see if that was causing a problem but it didn't help. I also tried putting a plain HTML page in the folder and that won't load either - again a 404.

The page is installed in the ISV folder ..../isv/MyProject.

Can anyone help?

EDIT

This is on a multi-tenancy system. On my test company (testcompany) if I browse to http://crm/testcompany/isv/MyProject/MyPage.aspx, the page is loaded (without styles and images).

If I browse to http://crm/testcompany/isv/MyProject/TestImage.gif, the image is not shown.

If I browse to http://crm/isv/MyProject/TestImage.gif, the image is shown. Does this suggest a problem with the server setup and the way CRM messes around with virtual directories?

This does mean that if I set the styles reference to /isv.MyProject/Styles.css, the page looks correct. However, as I don't know where the project will be installed by customers, this is inappropriate.

+2  A: 

The issue is that CRM uses an ASP.NET Virtual Path Provider to include the tenant name in the URL path. But for file types that are not handled by the ASP.NET handler, IIS fails to find them.

As a work around, you can reference your CSS from your HTML page using a path like href="../Styles.css"

Actually you'd probably be better off using href="/ISV/MyProject/Styles.css" because when CRM is accessed using an Internet Facing Deploy configuration, it does not include the tenant name in the path.

Corey O'Brien