2010-02-02 23 views
5

Tôi đã thấy điều này trong một thời gian dài và cuối cùng đã quyết định đặt câu hỏi ở đây. Tôi có một số ứng dụng mà tôi cần phải duy trì được viết bằng Delphi 2007 cho .NET (ASP.NET 2.0). Thông thường, lần đầu tiên tôi chạy ứng dụng (sử dụng IIS), tôi nhận được thông báo "Không thể bắt đầu gỡ lỗi trên máy chủ web. Không thể đính kèm với quá trình xử lý nhân viên ASP.NET". Tôi chỉ cần nhấn F9 (chạy) một lần nữa, và nó chạy. Đôi khi tôi phải thử chạy nhiều lần trước khi nó thực sự chạy.Không chính xác "Không thể bắt đầu gỡ lỗi ... Không thể đính kèm với quá trình công nhân ASP.NET" trong Delphi 2007 cho .NET

Tôi đang chạy Windows 7 64 bit (và đã thấy hiệu ứng tương tự trên Vista 64 bit). Tôi có IIS cấu hình cho ASP.NET, và tôi có đoạn mã sau trong tập tin Web.config của tôi.

<system.webServer> 
     <modules> 
     <add name="DbgConnect" type="Borland.DbkAsp.DbkConnModule,Borland.dbkasp,Version=10.5.0.0, 
      Culture=neutral, PublicKeyToken=b0524c541232aae7" preCondition="managedHandler" /> 
     </modules> 
     <validation validateIntegratedModeConfiguration="false" /> 
    </system.webServer> 

Vấn đề là cuối cùng tôi có thể chạy ứng dụng trong trình gỡ lỗi, đôi khi ngay cả trong lần thử đầu tiên. Nhiều khi tôi nhận được sự thất bại nó xảy ra khoảng 15 giây hoặc lâu hơn sau khi tôi bấm Chạy, đôi khi ngay cả sau khi tôi đã nhấn một hoặc hai trang (hoặc ba) của ứng dụng Web. Và, có, khi Delphi được vào chế độ này, tôi chỉ có thể chạy mà không cần gỡ lỗi, và tất cả là tốt (trừ khi tôi thực sự muốn gỡ lỗi). Và, tôi chỉ có thể tiếp tục cố gắng chạy trong trình gỡ rối và cuối cùng nó sẽ hoạt động. Có vẻ như trình gỡ lỗi .NET của Delphi là bằng cách nào đó nhận được ý tưởng rằng ứng dụng không thể chạy, và sau đó từ bỏ và dừng quá trình (như tôi đã đề cập đôi khi chạy rõ ràng).

Tôi biết các nhà phát triển khác cũng đã xem hành vi này. Câu hỏi của tôi là, có ai biết cách ngăn chặn hành vi phiền toái này không?

+0

Tôi khá chắc chắn rằng đây là một cái gì đó đang xảy ra nội bộ với Delphi 2007 cho .NET. Dường như trình gỡ lỗi đã hết thời gian. Tôi đi đến kết luận này bởi vì đôi khi tôi có thể nhấp qua 2 hoặc 3 trang khác nhau của ứng dụng ASP.NET trước khi thông báo lỗi này được hiển thị. Rõ ràng thông báo lỗi là sai. Và, lỗi dường như được nâng lên từ trình gỡ lỗi. Tại thời điểm này, tôi nghĩ rằng cơ hội mà Embarcadero sẽ khắc phục tính năng này trong một tính năng đã không được chấp nhận (Delphi cho .NET) là gần như không. –

Trả lời

0

Nếu bạn gặp sự cố này, bạn sẽ tiếp tục gặp sự cố này. Tuy nhiên, đây là một giải pháp.

Bắt đầu bằng cách chạy dự án của bạn mà không cần gỡ lỗi và sau đó đính kèm vào dự án khi nó đang hoạt động. Để thực hiện việc này, chọn Chạy | Chạy mà không cần gỡ lỗi hoặc nhấn Ctrl-Shift-F9.

Sau khi ứng dụng của bạn được thiết lập và đang chạy, và bạn muốn có các dịch vụ của trình gỡ rối có sẵn, chọn Chạy | Đính kèm quy trình. Từ hộp thoại Đính kèm vào quy trình, đặt trình gỡ lỗi Debugger thành Trình gỡ lỗi .NET CodeGear. IIS bây giờ sẽ xuất hiện trong hộp thoại Chạy quy trình. Trên máy tính của tôi, nó xuất hiện dưới dạng w3wp.exe. Bỏ chọn hộp kiểm Tạm dừng sau khi đính kèm, sau đó bấm Đính kèm. (Sau khi sử dụng hộp thoại Đính kèm vào Quy trình lần đầu tiên, nó sẽ mặc định cho trình gỡ lỗi .NET và Tạm dừng sau khi đính kèm sẽ không được chọn.)

Bạn hiện đang chạy với trình gỡ lỗi được bật. Nếu bạn nhấn một điểm ngắt hoặc gặp phải một ngoại lệ, hoặc chọn Chạy | Tạm dừng chương trình, trình gỡ lỗi sẽ được tải. Nếu bạn muốn tắt trình gỡ lỗi mà không đóng ứng dụng, chọn Chạy | Tách Từ Chương Trình.

Dường như, vì ứng dụng đang chạy, bất cứ điều gì đã từ bỏ và đưa ra thông báo lỗi sai không liên quan.

Trên kích thước cộng, có một hiệu ứng phụ tốt đẹp khi sử dụng phương pháp này để gỡ lỗi ứng dụng Delphi cho .NET. Một khi bạn đang runninng, và tìm thấy một vấn đề, bạn có thể bật vào trình gỡ lỗi và xem những gì đang xảy ra bên trong. Nếu bạn tìm thấy một vấn đề cần khắc phục, hãy tách khỏi các hệ thống, khắc phục sự cố và biên dịch lại. Bạn có thể để ứng dụng của bạn chạy trong IIS.

Khi dự án đã được biên dịch lại, trang tiếp theo bạn nhấn trong ứng dụng bằng IIS sẽ khiến chương trình cập nhật tải. Nếu bạn cần trình gỡ lỗi một lần nữa, chỉ cần đính kèm vào quá trình IIS. Nói cách khác, bạn gỡ lỗi, sửa, biên dịch lại, gỡ lỗi, sửa chữa, biên dịch lại, ... mà không phải đóng ứng dụng trong trình duyệt của bạn.

0

Tôi không nhớ chính xác thông báo lỗi, nhưng tôi tin rằng tôi đã từng thấy điều gì đó ít nhất tương tự như vậy trong quá khứ. Tất cả tôi đã làm để sửa chữa nó đã chạy một "Sửa chữa" trên .NET 2.0 Framework (thông qua Control Panel -> Add/Remove Programs). Sau đó, có thể khởi động lại máy tính của bạn sau đó ...

+0

Tôi hiện đang làm việc trên một dự án khác. Khi tôi quay lại Delphi cho .NET, tôi sẽ thử cái này. Cám ơn vì sự gợi ý. –

+0

OK, quay lại dự án này. Tôi đã sửa chữa trên .NET 2.0 Framework SDK (đó là mục .NET duy nhất trong applet Programs and Features. Tôi đang chạy trong Windows 7). Mọi thứ dường như tốt hơn một chút, nhưng tôi vẫn nhận được hành vi một cách thường xuyên. –

Các vấn đề liên quan