在IIS

时间:2017-01-24 12:22:51

标签: c# asp.net iis iis-7 treeview

我面临有关TreeView控件的问题。我为TreeView控件的节点启用了复选框。它工作正常,显示正常。但是,当我将其部署到IIS时,复选框在那里不可见。它根本没有渲染。 以下是TreeView

<asp:TreeView id="tvExplicit"
        EnableClientScript="true"
        PopulateNodesFromClient="true"  
        ExpandDepth="0" 
        ShowLines="true" 
        ShowExpandCollapse="true"
        ShowCheckBoxes="Root"
        OnTreeNodePopulate="tvExplicit_TreeNodePopulate"
        Width="1px"
        runat="server">

    <Nodes>
    </Nodes>

  </asp:TreeView> 

此代码在我的本地计算机上正常运行。但不是在IIS上部署时。除了显示根节点的复选框外,一切正常。

注意:复选框根本不会呈现为HTML。因此,根据我的不是CSS阻止它

更新:我能够发现该页面的先前版本已缓存在IIS中,即使在重置APP池后也未重置。

第二次更新:localhost中的复选框的客户端ID为ctl00_MainContent_tvExplicitn0CheckBoxctl00_MainContent_tvExplicitn1CheckBox等。这就是问题的原因。 我注意到的另一件事是为localhost和部署到IIS的服务器中的控件生成的客户端ID的差异。 下面是渲染的<a>,它是两者中树视图控件的一部分:

  1. IIS:MainContent_tvExplicitt0MainContent_tvExplicitt1这是树视图节点链接的ID
  2. LocalHost:ctl00_MainContent_tvExplicitt0ctl00_MainContent_tvExplicitt2
  3. 问题可能与如何在不同环境中实际呈现控件有关,即我的localhost和IIS服务器。 在localhost中,.Net 3.5 framework位于IIS服务器.Net 4中。因此,由于client ID生成在两个版本中都有所不同,所以可能是这样。

    第三次更新 另外,我在.net 4中将框架版本更改为localhost,但它没有重现该问题。它还在web.config中添加了controlRenderingCompatibilityVersion="3.5"。然后我将相同的代码部署到IIS,我收到controlRenderingCompatibilityVersion不是有效标记的错误。是否意味着IIS服务器未在.net 4上运行。我自己无法访问IIS服务器。

    第4次更新: 应用程序在IIS中配置了.net 4版本。

    第五次更新 我将相同的构建部署到不同机器上的另一个IIS服务器(这些是我们运行应用程序的旧服务器)。并且可以看到复选框。 .net框架的版本与面临问题的版本相同。 要求相关团队将这些服务器中的相同设置更新为面临问题的服务器。它仍然没有帮助。因此,在新的服务器上配置网站的方式确实存在问题

4 个答案:

答案 0 :(得分:8)

还没有答案需要显示图片,我尝试过相同的,在aspx中使用此代码:(我没有更改IIS中的任何设置,在aspx中也没有任何内容,创建了一个简单的解决方案&gt;&gt;添加了树视图并进行了部署。)

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <div> 
        <asp:TreeView ID="TreeTest"
            EnableClientScript="true"
            PopulateNodesFromClient="true"
            ExpandDepth="0"
            ShowLines="true"
            ShowExpandCollapse="true"
            ShowCheckBoxes="Root"
            OnTreeNodePopulate="TreeTest_TreeNodePopulate"
            Width="1px"
            runat="server"> 
            <Nodes>
                <asp:TreeNode Text="Something">
                    <asp:TreeNode Text="11"></asp:TreeNode>
                </asp:TreeNode>
                <asp:TreeNode Text="Something">
                     <asp:TreeNode Text="11"></asp:TreeNode>
                </asp:TreeNode>
                <asp:TreeNode Text="Something"></asp:TreeNode>
            </Nodes> 
        </asp:TreeView>  
    </div>
</asp:Content>

在我当地检查可以看到: enter image description here

在IIS版本6.2,Windows Server 2012中部署,可以看到: enter image description here

必须有其他内容阻止页面中的复选框。显示更多代码。

答案 1 :(得分:5)

有时为不同版本的IE配置IIS而不是本地版本,这可能会导致一些兼容性问题。

我总是将以下内容添加到我的html文件中的head元素中:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

这里有更多信息:

https://msdn.microsoft.com/en-us/library/jj676913(v=vs.85).aspx

答案 2 :(得分:0)

如果您想测试它是否是控件名称并且您正在使用代码创建复选框,您可以将您正在使用的控件的clientid属性设置为Static,更新管理它的代码以便使用控件ID,然后查看代码是否有效。

答案 3 :(得分:-1)

转到IE \ tools \ Compatibilty视图设置并按添加以将您的网址添加到列表中,然后再次尝试加载您的网页。

希望有所帮助

此致