Đây lại là một biến thể của cùng một câu hỏi mà một ngoại lệ StackOverflow xảy ra như là kết quả của 256K ngăn xếp kích thước trong khi chạy dưới IIS. Vấn đề này không có gì mới và nó đã được hỏi nhiều lần (here và here)IIS StackOverflow ngoại lệ
Câu hỏi của tôi hơi khác một chút. Ngoại lệ được ném khi một khách hàng yêu cầu dữ liệu và dịch vụ WCF chạy dưới IIS 7 cố gắng tuần tự hóa một đồ thị đối tượng khá lớn. Nó thực sự xảy ra trong serialization
tôi có thể dễ dàng tạo lại vấn đề trong môi trường phát triển bằng cách chạy lấy/serialize thói quen trong một thread với một hạn chế ngăn xếp kích thước:
static void Main(string[] args)
{
Thread t = new Thread(DoWork, 262144);
t.Start();
t.Join();
Console.ReadLine();
}
private static void DoWork()
{
var dataAccess = new DataAccess();
var data = dataAccess.LoadData();
var serializer = new DataContractSerializer(typeof(List<Data>), null, int.MaxValue, false, true, new DataContractSurrogate());
var memoryStream = new MemoryStream();
serializer.WriteObject(memoryStream, data);
}
này mô phỏng các ngoại lệ StackOverflow giống như trong IIS. Khi tôi thay đổi các tham số STACKSIZE được truyền cho constructor của chủ đề đến 1MB, nó hoạt động tốt ...
Câu hỏi của tôi là như thế nào ai có thể làm bên này của một phương pháp dịch vụ WCF? Nói cách khác, trong phương pháp dịch vụ WCF của tôi tôi không rõ ràng tạo ra một serializer và gọi WriteObject. Làm thế nào/nơi tôi có thể làm điều này cùng một loại công việc xung quanh trong một chủ đề mà tôi có thể kiểm soát stackSize?
Cảm ơn!
Cảm ơn bạn đã trả lời nhanh chóng, nhưng tôi thà giải quyết vấn đề này trong mã. Tôi đã thử editbin.exe với chuyển đổi/stack, nhưng chạy vào các vấn đề quyền kể từ khi ứng dụng w3wp nằm trong thư mục system32. Tôi không thể cập nhật tệp. Ngoài ra, nếu họ cài đặt bản vá hoặc cập nhật trên IIS, các thay đổi của chúng tôi sẽ bị ghi đè. Bất kỳ suy nghĩ về cách nó có thể được giải quyết lập trình? –
@JohnRussell: Tôi có cảm giác rằng bạn không thể sửa đổi việc tạo ra các chủ đề. Nếu đó là trường hợp, tùy chọn duy nhất tôi biết là sửa đổi hình ảnh. Có lẽ bạn sẽ tự lưu trữ và sửa đổi nhị phân đó thay vì IIS. –
tôi có thể có thể thay đổi việc tạo ra các chủ đề, nhưng tôi chỉ không chắc chắn làm thế nào hoặc nơi mà có được của thực hiện trong một quá trình được tổ chức bởi IIS. Không có tuyên bố rõ ràng nào tạo ra bộ nối tiếp và gọi hàm WriteObject(). –