ASP.NET主题无法正确呈现

时间:2008-11-24 22:51:54

标签: asp.net deployment

我有一个使用主题的小型Web应用程序。主题适用于主机,所以在preinit,如果host = a,加载x主题,如果host = b,则加载y主题。

在我的代码中,这看起来像:

如果request.url.host.contains(“a”)那么 Page.Theme = x 其他 request.url.host.contains(“b”)然后 Page.Theme = y

我有一个网址是a.abc.com,另一个是b.abc.com(这是这个结构,但字母是有意义的/公司名称)。问题是(并且我已经完成了主机==“”),当我在localhost上调试我的站点(上面的另一个子句,如果是host = localhost的块)时,样式呈现完美。元素的对齐是完美的,正如我所期望的那样,我在css中为宽度,边距等提供了数值。但是,当我使用VS2008的发布工具(带有可更新的标签),并上传到a.abc.com,它具有与localhost相同的样式表(在其自己的文件夹中的副本)时,会出现各种对齐问题,就好像我没有工作。为什么我的样式错误地呈现@ runtime?如果有帮助,我使用的是VS2008专业版,IIS6和Windows Server 2003。

令人沮丧的是,页面源指示主题正在加载正常,因为它在HTML头中引用。因此,当我发布时,加载并引用了a.abc.com的主题。除了所有这些信息之外,没有明显迹象表明问题是什么。我没有尝试在ASPX标记中传统引用单个CSS文件,但如果我这样做并且这有效,那么它也无法解释问题。

由于

5 个答案:

答案 0 :(得分:1)

您是否在代码中尽早设置了主题?如果您在代码隐藏中执行此操作,则必须在请求生命周期的早期,在PreInit事件中将主题应用于页面。

答案 1 :(得分:1)

我最近遇到了这个问题并写了a quick blog that explains how to get around it。如果其他人遇到此问题,您只需要在web.config中授权Theme文件夹。

答案 2 :(得分:0)

是的,它是在页面上的。

我认为这与表单身份验证有关。如果我查看(不调试)登录页面,它会选择localhost主题并且所有内容都正确显示。登录控件位于页面中间,应该是等等。

但是,如果我调试页面并且正如您所期望的那样,登录页面是开始/默认页面,则登录控件显示在左侧,就像我在部署时一样,并且源指示适当主机的css已经被选中 - 只有在我调试时,才会有登录的风格。

答案 3 :(得分:0)

您使用的是内置网络服务器吗?在ASP.Net Development Server中运行时,App_Themes中的样式不会在任何未经身份验证的页面上使用(例如Login.aspx或ForgotPassword.aspx)。这是因为用户尚未对该文件夹具有浏览权限,或者App_Themes文件夹缺少浏览权限。显然,IIS会处理这个问题,但Cassini不会这样做。

尝试将此添加到web.config,以便在身份验证之前使主题和样式有效。

                                   

或者,如果可能,请切换到在计算机上的IIS上运行应用程序。

答案 4 :(得分:0)

我已启用并安装了

中的所有子功能

Internet Information Services --> World Wide Web Services --> Common HTTP Features

这通过主题不起作用的问题解决了。