Avatar billede neoman Novice
26. marts 2007 - 17:07 Der er 5 kommentarer og
1 løsning

System.Threading.ThreadAbortException

Nogen som kender den ovennævnte exception ? Den får jeg hvis jeg prøver at tilgå min egen side med server.tranfsfer trigget af et button click. Har googlet lidt, men har endnu ikke fundet noget forståelig (for mig) forklaring på fenomænet.

Hvordan kan jeg pege på den samme side uden denne exception ?

Jeg har lavet en lille testside med fejlen i :

aspx siden

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test.aspx.vb" Inherits="Admin_test" %>

<!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>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Roster.mdb"
            SelectCommand="SELECT [SlotID], [SlotStart] FROM [Slots]" ConflictDetection="CompareAllValues" DeleteCommand="DELETE FROM [Slots] WHERE [SlotID] = ? AND [SlotStart] = ?" InsertCommand="INSERT INTO [Slots] ([SlotID], [SlotStart]) VALUES (?, ?)" OldValuesParameterFormatString="original_{0}" UpdateCommand="UPDATE [Slots] SET [SlotStart] = ? WHERE [SlotID] = ? AND [SlotStart] = ?">
            <DeleteParameters>
                <asp:Parameter Name="original_SlotID" Type="Int32" />
                <asp:Parameter Name="original_SlotStart" Type="DateTime" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="SlotStart" Type="DateTime" />
                <asp:Parameter Name="original_SlotID" Type="Int32" />
                <asp:Parameter Name="original_SlotStart" Type="DateTime" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="SlotID" Type="Int32" />
                <asp:Parameter Name="SlotStart" Type="DateTime" />
            </InsertParameters>
        </asp:AccessDataSource>
        &nbsp;</div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="SlotID"
            DataSourceID="AccessDataSource1">
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                <asp:BoundField DataField="SlotID" HeaderText="SlotID" InsertVisible="False" ReadOnly="True"
                    SortExpression="SlotID" />
                <asp:TemplateField HeaderText="SlotStart" SortExpression="SlotStart">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("SlotStart") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("SlotStart","{0:d}") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </form>
</body>
</html>

aspx.vb siden :

Partial Class Admin_test
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        '  Server.Transfer("~/Admin/test.aspx")
        Response.Redirect("test.aspx")
    End Sub
End Class


Jeg får følgende fejlmeddelelser nårr  jeg klikker på Button1:

A first chance exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll
An exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll but was not handled in user code
Avatar billede snepnet Nybegynder
26. marts 2007 - 17:59 #1
Tag et kig her:
http://msdn2.microsoft.com/en-us/library/caxa892w.aspx
Der står hvorfor.
Mvh
Avatar billede neoman Novice
26. marts 2007 - 18:24 #2
Hmm - det løser ikke mit problem som er som følger:

1. Jeg opbygger dynamiskt en tabel med nogle child controls i cellerne, som alle har en viewstate
2. I nogle tilfælde ønsker jeg at manipulere tabellens indhold, og det går fint med postback og genopbygge tabellen ved hver postback
3. Indimellem ønsker jeg at ændre antal søjler i tabellen, og her går det galt ved postback, da viewstate ikke længere passer på de controls som jeg nu har.
4. For at blive af med den gamle viewstate, når jeg genopbygger tabellen men nu med et andet antal søjler, så kalder jeg siden igen med server.transfer/response.redirect (selv om der står man ikke bør lave callback på den måde :-). Det ser ud til at funke fint, lige på nær den "exception" jeg listede ovenover.

Jeg ved ikke om det er klart nok - men hvis nogen har en bedre idé så er jeg da ganske lydhør:)
Avatar billede neoman Novice
26. marts 2007 - 18:25 #3
..eller det kan være det løser mit problem, men jeg kan ikke gennemskue løsningen Snepnet :)
Avatar billede snepnet Nybegynder
26. marts 2007 - 23:00 #4
Prøv:
Response.Redirect("test.aspx", false)
Mvh
Avatar billede neoman Novice
26. marts 2007 - 23:31 #5
go' idé tak, men samme resultat :-(  Hvis jeg forstår teksten i dit link korrekt, så får man den exception uanset hvad man end foretager sig - er det rigtigt ?
Avatar billede neoman Novice
03. april 2007 - 21:21 #6
Må hutle mig igennem med den exception så, siden jeg ikke kan blive af med den på nogen måde.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester