2010-11-09 37 views
1

我遇到了同样的问题禁用主题:http://forums.asp.net/t/1023591.aspxASP.NET - 这里描述为WebService的

我有一个默认的页面主题的根web.config的<pages />元素,设置哪些,除了网站的其余部分,正在被应用到WebService .ASMX页面。我想阻止ASP.NET将主题应用于.ASMX页面。

在上述讨论的回答说,你可以在.NET Framework的根config文件夹中编辑 'DefaultWsdlHelpGenerator.aspx'(C:\ WINDOWS \ Microsoft.NET \框架\ VERSION \ CONFIG \ DefaultWsdlHelpGenerator.aspx),并指定<%@ Page Theme="" %> ,但这只有在您能够访问服务器上的该文件时才有效。

我已经尝试在web.config中添加一个<location />元素,该元素指向特定的.ASMX文件,但似乎被忽略,因为.ASMX页面仍然是主题。

有什么办法可以防止ASP.NET将应用程序主题应用于.ASMX文件,这些文件不需要修改系统级别的DefaultWsdlHelpGenerator.aspx(上面提到过)?

编辑

我能够通过让我的基地页类型来定义应用的主题来解决这个问题,但甚至不顾我的解决办法,我想知道是否有一个“正确”的方法来覆盖这在ASP.NET中相当可笑的行为。

回答

0

如果.asmx文件不在网站的根目录下,你不能只在其文件夹中放入另一个web.config并删除主题?

+0

从理论上讲,这是行得通的,是的。但是,在这个应用程序中,.ASMX文件位于根目录中。我正在寻找一种排除更改任何文件的物理位置的解决方案。 – 2010-11-09 22:34:41

1

如何从web.config中删除行并向您的基页添加一行(希望您拥有一行),该行设置您的默认主题。如果您仍想通过web.config进行管理,则可以为此主题值添加appSettings条目。

例子:

protected override void OnPreInit(EventArgs e) 
    { 
     base.OnPreInit(e); 
     this.Theme = <Enter Your Theme Here>; 
    } 
+0

事实上,这是我正在使用的解决方案,但我觉得ASP.NET会以这种方式行事,因为我们不希望将其应用程序特定样式应用于生成的非模板页面模板。 – 2010-11-10 03:23:49

0

注意的.asmx文件不在任何意义上的 “页面”。将它们放在一个文件夹中,这个文件夹需要采取一些“针对所有页面”的操作。

要么从ZacharyJames Gaunt的建议。

或者,更好的是,停止使用ASMX,并转移到WCF。

+0

尽管.asmx文件不是页面,但它是首先导致行为的根级别的元素。我原以为至少我可以用''覆盖它。 – 2010-11-10 03:31:45