Win 7 IIS 7.5 странное поведение с системой.ComponentModel.BrowseableAttribute


Я просто хочу посмотреть, будут ли другие вести себя так же, как я.

У меня есть класс gridviewex, который расширяет GridView. Одно из свойств в этом классе имеет свойство Browsable(true) в качестве аннотации. Это позволяет (по крайней мере, до IIS 7.5 это было) задать свойство в разметке. Но в Windows 7 IIS 7.5 он выдает ошибку синтаксического анализатора. Обратите внимание, что на сервере Win 2008 с IIS 7.5 приложение работает нормально.

Поэтому мне интересно, если это какая-то настройка IIS 7.5 в Win7, которая портит его вверх.

Шаги для воспроизведения

A) создать новый ASP.Net приложение, используйте 4.0 для версии framework

B) создайте новый класс под названием GridViewEx (get / set - это просто фиктивный код, не важно):

namespace GUI.Controls
    {
        public class GridViewEx : GridView
        {
            [Browsable(true)]
            [Description("my test")]
            public int VirtualItemCount
            {
                get
                {
                    return 42;
                }
                set
                {
                    int x = value;
                    int y = x + x;
                }
            }

        }
    }

C) По Умолчанию.aspx, зарегистрируйте префикс тега (измените WebApplication1 на то, что вы назвали своим проектом). Эта строка должна идти прямо под директивой Page.

<%@ Register TagPrefix="common" Namespace="GUI.Controls" Assembly="WebApplication1" %>

D) По Умолчанию.aspx, добавьте это к вашему контенту:

<common:GridViewEx runat="server" ID="gv" VirtualItemCount="-1">

</common:GridViewEx>

Если я запущу это приложение на IIS 7.0 или более ранней версии, я не получаю ошибок. Однако на Win 7 IIS 7.5 он выдает следующую ошибку:

Parser Error 
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: The 'VirtualItemCount' property cannot be set declaratively.

Я не понимаю, почему я получаю ошибку на Win 7 IIS 7.5, но не на более ранних версиях IIS и не на IIS 7.5 на сервере Win 2008. Есть идеи?

1 2

1 ответ:

Хорошо, я нашел хак, чтобы сделать эту работу. Добавил эти атрибуты в VirtualItemCount:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[EditorBrowsable(EditorBrowsableState.Always)]
[Bindable(true)]

Теперь я больше не получаю ошибку синтаксического анализатора. Я не понимаю, почему я должен был добавить их, чтобы сделать в работе на моей машине Win 7, но на сервере я протестировал его на эти дополнительные атрибуты не нужны (и моя машина Win 7 и сервер находятся на IIS 7.5). Думаю, это останется тайной.

Большое спасибо человеку, который ответил на этот вопрос, так как он направил меня в правильном направлении.