Sys is undefined или переход на ASP.NET AJAX Beta2
Жил себе проект на Atlas CTP и никого не трогал.
В проекте подключались свои *.js файлы со своими прибабулинами.
И вот пришло время когда нужно было прикрутить DateTimePicker, так как из всего мною написаного ничего подходящего небыло (под каждым проектом, календарик дописывался, а в единое целое свести все времени нету) - решил заюзать что-то бесплатное простенькое и т.д. приглянулось Basic Date Time Picker (http://www.basicdatepicker.com/). Его шаровая версия конечно (если кто кинет ссылку на что-то более интересное и бесплатное - буду благодарен).
Так вот, они подогнали свое изделие под Beta 2, а так как мне было лень что и почему падает, решил я быстренько прикрутить эту beta 2 (ну типа на релиз будет проще переходить). Мануалы о перехоже с последнего CTP на бету 1, с беты 1 на бету 2 я почитал ну думаю 5 минут и Ctrl+H мне помогут. Угу как же, действительно так как в основном было заюзано серверные контролы - то все прошло гладко ... ну не за 5, а за 15 минут... с выяснениями изменений в рахных экстенсерах и т.д....
А вот тут началось интересное, при запуске проекта постоянная ошибка что мол "Sys is undefined" и вобще мы люди не местные, и я не я, и кобыла не моя
Ну да ладно, что гугл закрыли ?
Поиск и внимательное прочтение мануалов привели к тому что ... (вот тут я не хочу описывать почему да как, вобщем разные браузеры по разному влияют на восприятие действительности того, что они получают от веб сервера (Особенно прет Яблочный самогон) -) ) благодаря поддержке Safari .. нужно в свой кастом жабаскрипт (читать вначале откуда он взялся) прилепить в конеце такую строку:
if(typeof(Sys) != 'undefined') Sys.Application.notifyScriptLoaded(); (Кому интересно зачем - читайте доки = они рулёз)
Ну ок, конечно сделаем и ...... Виг Вам(жилище) - не работает, дальнейший поиск + эксперементы выявили:
1) Fiddler (http://www.fiddlertool.com/fiddler/) рулит.
2) Особенно если у вас:
<authorization>
<deny users="?"/>
</authorization>
3) То разрешите пожалуйста анонимный доступ до ScriptResource.axd
<location path="ScriptResource.axd">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Другими словами, если не подключать свои скрипты во так:
<asp:ScriptManager ID="scriptManager" runat="server" ScriptMode="Auto" EnablePartialRendering="True">
<Scripts>
<asp:ScriptReference ScriptMode="Auto" Path="~/Scripts/Helpers.js" />
</Scripts>
</asp:ScriptManager>
все работает, иначе убедитесь в том что есть доступ для анонимных пользователей к ScriptResource.axd (см. пункт 3)