Tôi không thể gỡ lỗi tệp global.asax!Có thể gỡ lỗi Global.asax không?
Tôi có một số mã trong phương thức Application_Start()
nhưng khi tôi đặt điểm ngắt trong phương thức, nó bị bỏ qua!
Điều này có bình thường không?
Tôi không thể gỡ lỗi tệp global.asax!Có thể gỡ lỗi Global.asax không?
Tôi có một số mã trong phương thức Application_Start()
nhưng khi tôi đặt điểm ngắt trong phương thức, nó bị bỏ qua!
Điều này có bình thường không?
Có lẽ bạn nên thử:
Có, điều đó là bình thường.
Application_Start()
được xử lý bởi IIS.
Nhưng tất cả các phương pháp khác, ví dụ Session_Start
và tất cả các phương pháp khác, ngoại trừ Application_Start()
có thể được gỡ lỗi bình thường.
Application_Start()
được gọi một lần cho mỗi AppDomain. Nếu bạn không chạm vào điểm ngắt, điều đó có nghĩa là AppDomain đã được tạo, hãy thực hiện như sau:
Kiểm tra xem ứng dụng web của bạn đang ở chế độ debug (<compilation debug="true">
trong web.config).
Nếu bạn đang sử dụng IIS của nhà phát triển bắt đầu bằng VS, chỉ cần khởi động lại hoặc xây dựng lại ứng dụng.
Nếu bạn đang ở trên IIS bình thường bạn có hai lựa chọn:
Debug - Attach to process
, nhập tên máy tính và sau đó chọn một quy trình để gỡ lỗi. Nó thường là một w3wp.exe làm việc trong kiểu chế độ quản lý.cảm ơn bạn đã trả lời. tôi sử dụng IIS qua VS. – mahdiahmadirad
Cách đơn giản để đột nhập trong Application_Start()
là sử dụng lớp System.Diagnostics.Debugger
. Bạn có thể buộc ứng dụng phá vỡ bằng cách chèn System.Diagnostics.Debugger.Break()
nơi bạn muốn trình gỡ lỗi phá vỡ.
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Break();
// ...
}
Xóa global.asax
và thêm mã mới. Trong giải pháp của tôi, đã có global.asax
và global.asax.cs
.
Tất cả các phương pháp (Session_Start
, Application_Start
, ...) đã có trong tệp bot, nhưng chỉ những tệp trong số global.asax
mới được xem xét. Vì vậy, phá vỡ các điểm và mã trong cs không làm bất cứ điều gì.
Chỉ sau khi tạo lại tệp, global.asax.cs
có các phương thức thích hợp và chúng chạy.
Tôi đã làm theo hướng dẫn tại đây: http://rossnelson.blogspot.ca/2005/11/fixing-globalasax-in-aspnet-20.html. Về cơ bản, xóa global.asax và thêm một lớp ứng dụng toàn cầu tạo lại dấu phẩy với một mã phía sau tệp mà sau đó tôi có thể bước vào. Tôi đang chạy trên IIS và nó hoạt động tốt. – cbeuker
Điều này còn được gọi là 'Chạm vào web.config' và có thể được sử dụng cho một số trường hợp khi bạn cần làm mới trang web của mình mà không cần chạm vào IIS. Không thể tin rằng nó không xảy ra với tôi. Cảm ơn. – HockeyJ
Tôi ước điều đó thật đơn giản. Nhưng đối với tôi? "máy tính nói không" – Justin
Một lựa chọn khác để chấp nhận System.Diagnostics.Debugger.Break();
sẽ
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Launch();
//...
}
mà không nên phá vỡ các mã và nên bắt đầu gỡ rối ngay cả khi dịch vụ đã được bắt đầu với các quyền khác nhau.
này là tốt đẹp tôi đã cố gắng và nó đã làm việc cho tôi cũng ... cảm ơn –
Đừng mong đợi hàm Application_Start() sẽ được gọi ngay lập tức bằng cách nhấn f5. Application_Start() chỉ được gọi vào thời điểm yêu cầu đầu tiên của ứng dụng được thực hiện. Lạ nhưng đúng.
Trong trường hợp tất cả các câu trả lời không làm việc, hãy thử:
<compilation debug="true" ... />
trong web.config
. ;)
Rất tiếc là điều này đã được đánh dấu là câu trả lời chưa có xếp hạng -2 ... –
Nó có xếp hạng âm vì nó sai. Bạn cần phải sửa lỗi (nếu không bạn không có tệp pdb) và bạn cần phải nắm bắt máy chủ khi nó bắt đầu (vì đây là khi mã đó được chạy) nhưng bạn sẽ không thể để đính kèm vào quy trình. Bạn cần một tiến trình đang chạy để đính kèm trình gỡ rối, mã global.asax được chạy trong vài miliseconds đầu tiên của quá trình này bắt đầu vì vậy nó không thể (không sử dụng [câu trả lời đúng dưới đây] (https://stackoverflow.com/a/ 4809464/542251)) để đính kèm vào quá trình khi nó chạy mã này – Liam