2010-12-10 2 views
0

양식과 단추가있는 웹 페이지가 있습니다. 버튼을 클릭하면 SQL Server에 데이터가 삽입/업데이트됩니다. 일단 클릭하면 단추가 비활성화됩니다. 테스트 할 때 잘 작동합니다.하지만 때로는 DATA를 두 번 삽입합니다. 왜 그 일을하는지 잘 모르겠습니다. 뭐가 잘못 됐는지 알려주시겠습니까 ??Asp.net 데이터를 sqlserver에 삽입하십시오.

안부, 라비

+0

나는 브레이크를 밟았을 때 차가있다. 때때로 그것은 빠르게 브레이크를 걸기도합니다. 내가 뭐가 잘못되었는지 알려주시겠습니까 ??? – Andrey

+0

죄송합니다. 보관하지 못했습니다. 좀 더 자세히 알려 주실 수 있습니까? – Andrey

+0

롤 .. 내 영어로 죄송합니다 – SRK

답변

0

양식을 제출하는 동안 누군가 쉽게 F5를 누르면됩니다. 더 나쁜 경우 - 제출 후 리디렉션하지 않으면 양식 제출이 완료된 후 누군가가 F5를 누를 수 있습니다.

해결 방법 중 하나는 양식에 guid 토큰을 추가하는 것입니다 (양식로드시마다 새로 생성 됨). POST에서는 물건을 넣는 테이블에 토큰을 저장합니다. 그 전에 분명히 테이블에 게시 된 토큰이 이미 존재하는지 확인하고 거기에 이미 존재하는 토큰이 있는지 확인합니다. 새 토큰을 삽입하는 대신 레코드를 업데이트하거나 단순히 결과 페이지로 리디렉션합니다.

0

라비는, 당신은 두 번 루틴을 호출 할 수있다. 그걸 들여다 봤니?

사용이 :

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=asp.net+inserts+data+twice

검색 의도 없음 공격. 많은 사람들이 코드를 신중하게 검토 한 후에 좋은 답을 얻어야한다는 것을 경험 한 것 같아서 만 제시합니다.

더 구체적인 답변을 원하면 삽입 코드를 올려 놓거나 어떻게 수행해야하는지 알려줄 필요가 있습니다.

0

일부 데이터를 두 번 삽입하는 문제를 해결하는 Post-Redirect-Get 패턴을 사용해보십시오. 브라우저가 POST 요청을 서버에 보내 업데이트/삽입/수정 작업을 수행 한 후 이러한 작업 후에 응답을 반환하면 f5 버튼을 누르면 이전 요청이 서버로 다시 보내지고 작업이 다시 실행됩니다.

또한 데이터를 삽입하라는 요청을 보내는 버튼을 두 번 클릭 한 결과 일 수 있습니다. 삽입해야 할 데이터가 이미 있는지 확인해야 할 수도 있습니다.

희망 사항에 대한 답변을 찾으실 수 있습니다.

감사합니다. 디마.

+0

예, 지금 제가하고있는 것이 ... 고맙습니다. – SRK

관련 문제