Что не так с этим типом кода.aspx?
У меня есть один медведь времени, пытающийся выяснить, почему унаследованный проект не будет компилироваться для меня; Я получаю только одну ошибку - "Ссылка на объект не установлена", которую обычно просто исправить, но в этом случае она не дает подробных сведений о том, в каком именно файле возникла проблема. См. Первоначальный вопрос со многими обновлениями.
У меня есть подозрение, что за ошибкой стоит множество предупреждений, в которых говорится одно и то же (" ссылка на объект не установлена для экземпляра объекта ").
Проблема в том, что код, генерирующий эти предупреждения, насколько я могу судить, не является проблематичным; но опять же, я не эксперт ASP.NET, и уж точно не в том, что касается стороны VB, для которой я абсолютный новичок.
Дважды щелкнув эти предупреждения ("Ошибка времени выполнения ASP.NET: ссылка на объект не установлена на экземпляр объекта."), Я получаю строки, подобные этой:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="yanceys._Default" title="Web Order Entry" %>
Это происходит в нескольких папках под Проектом - эти папки имеют файл Default.aspx, под которым находится файл Default.aspx.vb.
Все они выглядят одинаково, за исключением того, что предшествует "._Default" в элементе Inherits ("yanceys" ниже):
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="yanceys._Default" title="Web Order Entry" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Order Entry Login Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
И файлы Default.aspx.vb тоже совпадают:
Namespace yanceys
Partial Class _Default
Inherits Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Session("SelectedMenu") = "Home"
Response.Redirect("../Login.aspx?MemberNo=042")
End Sub
End Class
End NameSpace
... за исключением пространства имен ("yanceys" выше) и MemberNo ("042" выше), которые уникальны для каждого файла Default.aspx.vb.
В чем может быть проблема? Какое может быть решение?
ОБНОВИТЬ
Когда я выполнил глобальный поиск по "пространству имен", чтобы увидеть, что я мог бы добавить к "yanceys", чтобы заставить его работать, количество предупреждений увеличилось до одного для каждого файла этого типа, все одинаковые ("Ошибка времени выполнения ASP.NET: ссылка на объект не установлена на экземпляр объекта."), Все указывают на ту же строку, что и преступник:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="yanceys._Default" title="Web Order Entry" %>
Это заставляет меня думать, что если я смогу решить эти Предупреждения, Ошибка (той же самой полосы, а именно, "Ссылка на объект не установлена на экземпляр объекта") также будет устранена.
ОБНОВЛЕНИЕ 2
Следуя совету TS, я открыл VS (2013) в качестве администратора, затем Файл> Открыть веб-сайт...
Восстановление сработало; сборка дает мне 1 ошибку, как и раньше, но другую:
Ошибка 1 Ошибка использования раздела, зарегистрированного как allowDefinition='MachineToApplication' за пределами уровня приложения. Эта ошибка может быть вызвана тем, что виртуальный каталог не настроен как приложение в IIS. C:\MemberOrderEntry\MembersOrderEntry\MembersOrderEntry\Mobile\web.config 75
ПРИМЕЧАНИЕ. В результате этого решение также будет названо "localhost_2030"; это кажется странным для меня...
ОБНОВЛЕНИЕ 3
В ответ на предложение TS я не вижу способа преобразовать файл из Code File в Code-behind.
Когда я щелкаю правой кнопкой мыши по проекту, я вижу это:
... и когда я щелкаю правой кнопкой мыши по отдельному файлу.vb, я вижу это:
ОБНОВЛЕНИЕ 4
Чтобы быть немного яснее, предупреждение (и, вероятно, связанная с ним "слепая" ошибка) выглядит примерно так в списке ошибок, когда я нажимаю два раза на сообщение с предупреждением:
... и проблемный файл находится в папке проекта, как показано здесь:
1 ответ
Я обнаружил, что это написано котом с нерешительной фамилией, что звучало многообещающе, поэтому я закрыл VS, удалил два файла *.suo, снова открыл VS ("Как администратор"), а затем проект, попробовал Build > Rebuild Web Site, и получил:
Error 1 compiler initialization failed unexpectedly: Project already has a reference to assembly System.Web.Extensions. A second reference to 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Web.Extensions.dll' cannot be added. vbc : Fatal
2-х нажатие на ошибку никуда не привело.
Я подумал: что теперь?Где вторая ссылка на System.Web.Extensions.dll, которая пытается быть добавлена, и как я могу предотвратить это?
Между тем, раздражение, связанное с сообщениями о соединениях TFS, заставило меня пойти по этому пути - избавить проект от всех следов TFS. Ответы здесь об удалении некоторых файлов (*.vsssssssssccccc и т. Д.) И удалении некоторых глобальных разделов из файла.sln не только сняли это раздражение, но и, по-видимому, решили другие проблемы.
Итак, некоторая комбинация из следующего:
Deleting the .suo files
Cleaning out the TFS files and sections
Running VS as Administrator
... довел проект до состояния, в котором он наконец-то работает! Кажется, что это смесь магии и случайности, что эти странные ошибочные сообщения "просто ушли" в результате этих вращений, но я предполагаю, что я приму тот факт, что это, по крайней мере, наконец работает.
Также обратите внимание (я не знаю, почему или как это вписывается в то, что произошло), что что-то в этих изменениях заставило меню "ВЕБ-САЙТ" в VS изменить на "ПРОЕКТ"
ОБНОВИТЬ
И сегодня меню снова изменилось, с ПРОЕКТА на ВЕБ-САЙТ, но оно все еще строится и запускается, так что, думаю, я просто в ужасе почесываю голову и продолжаю беспечно продолжать.