Блок повреждения ASP.NET “Не мог загрузить файл или блок App_Web_ *”

Обновить мастер-лист

enter image description here

Настройте пять констант ( Const ) в соответствии со своими потребностями.

Код

Sub UpdateMaster()

    Const cMaster As String = "Master"  ' Master Worksheet Name
    Const cSample As String = "Sample"  ' Sample Worksheet Name
    Const cCols As String = "A:D"       ' Data Columns Range Address (or "1:4")
    Const cLRC As Variant = "A"         ' Last-Row Column Letter/Number (or 1)
    Const cFR As Long = 2               ' First Row Number

    Dim rng As Range      ' Last Used Cell in Last-Row Column of both
                          ' Worksheets, Sample/Master/Unique Range
    Dim vntM As Variant   ' Master Array
    Dim vntS As Variant   ' Sample Array
    Dim vntR As Variant   ' Row Array
    Dim vntU As Variant   ' Unique Array
    Dim MNoR As Long      ' Master Number of Rows
    Dim SNoR As Long      ' Sample Number of Rows
    Dim Cols As Long      ' Number of Columns in Data Columns Range
    Dim i As Long         ' Sample/Unique Array Row Counter
    Dim j As Long         ' Sample/Master/Unique Array Column Counter
    Dim k As Long         ' Master Array Row Counter
    Dim m As Long         ' Row Array Row Count(er)

    ' Speed up.
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With

    ' Handle errors.
    On Error GoTo ErrorHandler

    ' In (Last-Row Column of) Sample Worksheet
    With ThisWorkbook.Worksheets(cSample).Columns(cLRC)
        ' Create a reference to Last Used Cell.
        Set rng = .Find("*", , xlFormulas, , xlByColumns, xlPrevious)
        ' Check if no data in column.
        If rng Is Nothing Then
            MsgBox "No data in column '" & Split(.Cells(1).Address, "$")(1) _
                & "'.", vbCritical, "Column Empty"
            GoTo ProcedureExit
        End If
        ' Calculate Sample Number of Rows.
        SNoR = rng.Row - cFR + 1
        ' Create a reference to Sample Range.
        Set rng = .Parent.Columns(cCols).Rows(cFR).Resize(SNoR)
        ' Copy Sample Range to Sample Array.
        vntS = rng
    End With

    ' In (Last-Row Column of) Master Worksheet
    With ThisWorkbook.Worksheets(cMaster).Columns(cLRC)
        ' Create a reference to Last Used Cell.
        Set rng = .Find("*", , xlFormulas, , xlByColumns, xlPrevious)
        ' Check if no data in column.
        If rng Is Nothing Then
            MsgBox "No data in column '" & Split(.Cells(1).Address, "$")(1) _
                & "'.", vbCritical, "Column Empty"
            GoTo ProcedureExit
        End If
        ' Calculate Master Number of Rows.
        MNoR = rng.Row - cFR + 1
        ' In Data Columns Range
        With .Parent.Columns(cCols)
            ' Calculate Number of Columns in Data Columns Range.
            Cols = .Columns.Count
            ' Create a reference to Master Range.
            Set rng = .Rows(cFR).Resize(MNoR)
            ' Copy Master Range to Master Array.
            vntM = rng
        End With
    End With

    ' Resize Row Array to Sample Number of Rows (as big as it could get).
    ReDim vntR(1 To SNoR)

    ' Loop through rows of Sample Array.
    For i = 1 To SNoR
        ' Loop through rows of Master Array.
        For k = 1 To MNoR
            ' Check if value of element at current row in 1st column of Source
            ' Array is equal to the value of element at current row in 1st
            ' column of Master Array.
            If vntS(i, 1) = vntM(k, 1) Then ' Match FOUND.
                ' Loop through the rest of the columns (to update the values).
                For j = 2 To Cols
                    ' Write value of element at current row in current column
                    ' of Source Array to element at current row in current
                    ' column of Master Array.
                    vntM(k, j) = vntS(i, j)
                Next
                ' Stop looping through rows of Master Array (unique values).
                Exit For
            End If
        Next
        ' Check if no match was found using the 'For Next Trick' i.e. when the
        ' for next loop finishes uninterupted, the value of the 'counter' is
        ' by 1 greater than the 'end' (VBA Help: "For counter = start To end").
        If k = MNoR + 1 Then
            ' Count the number of rows in Row Array.
            m = m + 1
            ' Write the current row number of Sample Array to Row Array.
            vntR(m) = i
        End If
    Next

    ' Check if new values found.
    If m > 0 Then
        ' Resize Row Array to number of new values found.
        ReDim Preserve vntR(1 To m)

        ' Resize Unique Array to number of rows of Row Array and to Cols
        ' number of columns.
        ReDim vntU(1 To m, 1 To Cols)

        ' Loop through rows of Row/Unique Array
        For i = 1 To m
            ' Loop through columns of Sample/Unique Array.
            For j = 1 To Cols
                ' Write the rows (containded in Row Array) of Sample Array to
                ' Unique Array.
                vntU(i, j) = vntS(vntR(i), j)
            Next
        Next
    End If

    ' Erase Row & Sample Arrays. All needed data is in Master & Unique Arrays.
    Erase vntR
    Erase vntS

    ' Copy Master Array to Master Range.
    rng = vntM
    ' Erase Master Array.
    Erase vntM

    ' Check if new values found.
    If m > 0 Then
        ' Create a reference to Unique Range.
        Set rng = rng.Cells(rng.Rows.Count, 1).Offset(1).Resize(m, Cols)
        ' Copy Unique Array to Unique Range.
        rng = vntU
    End If

    MsgBox "The operation finished successfully.", vbInformation, "Success"

ProcedureExit:

    ' Speed down.
    With Application
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With

Exit Sub

ErrorHandler:

    MsgBox "An unexpected error occurred. Error '" & Err.Number & "': " _
            & Err.Description, vbCritical, "Error"
    GoTo ProcedureExit

End Sub
14
задан Mark Cidade 30 November 2011 в 17:12
поделиться

2 ответа

Я получил это, есть исправление для него.

http://weblogs.asp.net/scottgu/archive /2007/04/11/public-hotfix-patch-available-for-asp-net-compilation-issues.aspx

Хотя это больше не происходит с более новыми машинами / установками.

3
ответ дан 1 December 2019 в 15:02
поделиться

Не для того, чтобы просто связать свой сайт, но я столкнулся с этой проблемой и написал сообщение в блоге по теме . Проверьте это, там есть ссылки на дополнительную информацию по этой теме. Но резюмируя это, вот детали:

Проблема:

Веб-сайт выдает ошибку при попытке загрузить пользовательский веб-элемент управления. Как видите, в последнем выпуске мы добавили новый настраиваемый элемент управления к другому настраиваемому веб-элементу управления, который отображается по мере необходимости. Поскольку внешний / родительский элемент управления и новый дочерний элемент управления являются отдельными элементами управления в исходном коде, когда .Net Framework переходит на компиляцию одного из этих двух элементов управления и не перекомпилирует другой одновременно, у вас будет устаревший файл пытается ссылаться на старую версию сборки. Тот факт, что файл. Net framework добавляет случайную строку к имени сборки во время компиляции. Имя вновь скомпилированного файла и предыдущая версия файла вызывают несоответствие имени файла, и поэтому внешний / родительский элемент управления ищет файл, который больше не существует. .

Возможные обходные пути или временные исправления:

1) Установив для свойства пакетной обработки тега компиляции значение false в файле web.config

<compilation debug="false" batch="false" />

2) Вы также можете уменьшить частоту этого, установив с помощью свойства numRecompileBeforeAppRestart :

<compilation debug="false" numRecompilesBeforeAppRestart="50" />

Подробнее см. в статье базы знаний 934839

Исправления проблемы после того, как она уже произошла:

1) Удалить временный ASP .Net файлы (это удаляет сайт)

2) Заставить родительский / внешний элемент управления перекомпилировать, отредактировать и сохранить файл кода. Это лучший вариант для исправления, чем №1, потому что это не приводит к отключению веб-сайта.

Мое предложение:

1) Сначала я думаю, что мы должны установить временное исправление №1 сверху, это может предотвратить все проблемы в будущем и может быть единственным ответом, который нам нужен.

2) Во-вторых, я бы загрузил и установил исправление 934839 от Microsoft в среде QA, чтобы убедиться, что оно не вызывает никаких проблем. После некоторого времени тестирования исправления в QA я бы установил исправление, чтобы получить постоянное исправление этой проблемы. В настоящее время мы можем удалить временные работы вокруг пункта 1.

Примечание:

2) Во-вторых, я бы загрузил и установил исправление 934839 от Microsoft в среде QA, чтобы убедиться, что оно не вызывает никаких проблем. После некоторого времени тестирования исправления в QA я бы установил исправление, чтобы получить постоянное исправление этой проблемы. В настоящее время мы можем удалить временные работы вокруг пункта 1.

Примечание:

2) Во-вторых, я бы загрузил и установил исправление 934839 от Microsoft в среде QA, чтобы убедиться, что оно не вызывает никаких проблем. После некоторого времени тестирования исправления в QA я бы установил исправление, чтобы получить постоянное исправление этой проблемы. В настоящее время мы можем удалить временные работы вокруг пункта 1.

Примечание: После установки Temp fix # 1 у меня больше не было этой проблемы. Я использую это исправление более 12 месяцев, и все в порядке!

8
ответ дан 1 December 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: