ASP.NET主题未正确呈现

ASP.NET主题未正确呈现,asp.net,deployment,Asp.net,Deployment,我有一个使用主题的小型web应用程序。主题在主机上工作,在preinit上也是如此,如果主机=a,加载x主题,如果主机=b,加载y主题 在我的代码中,这看起来像: 如果request.url.host.contains(“a”),那么 Page.Theme=x 其他的 那么request.url.host.contains(“b”)就 Page.Theme=y 我有一个url是a.abc.com,另一个是b.abc.com(就是这个结构,但字母是有意义的/公司名称)。问题是(我已经完成了host

我有一个使用主题的小型web应用程序。主题在主机上工作,在preinit上也是如此,如果主机=a,加载x主题,如果主机=b,加载y主题

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

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

我有一个url是a.abc.com,另一个是b.abc.com(就是这个结构,但字母是有意义的/公司名称)。问题是(我已经完成了host==“”),当我在localhost(上面if块中的另一个子句,其中host=localhost)上调试我的站点时,样式呈现得非常完美。元素的对齐是完美的,正如我在css中为宽度、边距等提供的数值所期望的那样。但是,当我使用VS2008的发布工具(勾选了Updateable)并上传到a.abc.com时,会出现各种对齐问题,就好像我没有做任何工作一样。为什么我的样式在运行时呈现不正确?如果有帮助,我使用的是VS2008 Pro版、IIS6和Windows Server 2003

令人沮丧的是,页面源代码表明主题加载正常,因为它在HTML头中被引用。因此,当我发布时,a.abc.com的主题被加载和引用。除了这些信息之外,没有明显的迹象表明问题出在哪里。我没有尝试在ASPX标记中常规地引用单个CSS文件,但是如果我这样做了,并且成功了,那么无论如何,它也不能解释问题


谢谢

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

是的,它位于页面PreInit上

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


但是,如果我调试页面,并且正如您所期望的,登录页面是开始/默认页面,则登录控件将显示在左侧,就像我部署时一样,并且源代码指示已拾取相应主机的css-只有在我调试时,在我登录之前不会应用任何样式。

您使用的是内置web服务器吗?在ASP.Net Development Server中运行时,App_主题中的样式将不会用于任何未经验证的页面(如Login.aspx或ForgotPassword.aspx)。这是因为用户还没有该文件夹的浏览权限,或者App_Themes文件夹缺少浏览权限。显然,IIS处理了这个问题,但卡西尼号没有

尝试将其添加到web.config,以便在身份验证之前让主题和样式工作


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

我最近遇到了这个问题并写了一篇文章。为了防止其他人遇到此问题,您只需授权web.config中的主题文件夹。

我已启用并安装了中的所有子功能

互联网信息服务-->万维网服务-->通用HTTP功能

这就解决了主题不工作的问题