2011-12-09 69 views
9

đây là URL của tôiURL yêu cầu không hợp lệ trong IIS 7

http://abc.domain.com/controller/action/A74444C3A7FA858C7995CA9954CBCF1E26604634767C5575396D908E8415CF8CCC04C05F49FED0AA9D9743B69ABF232BDE9787A5222D081DA638896C0D2379A673E1747A2FFE1158F14AF098B2899D2ABEB4EA738D89369627E479796B6B2B9EA9B247CC59EF10E3A88B6A56A87F0818E2AD2A942FFA31F1C941BB7AF6FDC55FE6733353F28DFAC1827688604CBFBAB4856E6C75F810D13923F9D913F51F5B02980163E6CD63BC04610AD2C12E07360D7BC2C69F1B0CD03E

Không có ký tự không hợp lệ trong URL chính nó như là tất cả mọi thứ đều được mã hóa. Tôi vẫn đang nhận được

Yêu cầu không hợp lệ - URL không hợp lệ Lỗi HTTP 400. URL yêu cầu không hợp lệ.

tôi biết địa chỉ URL là hết sức lâu dài và tôi đã có thể giải quyết vấn đề đó trong Cassini của tôi bằng cách thêm này httpRuntime maxUrlLength = "512"

trong web.config

Tuy nhiên trong IIS7 ngay cả sau khi chơi xung quanh với các giá trị maxurl và maxquerystring requestfiltering Tôi đã không thể giải quyết vấn đề này.

Đây là ứng dụng asp.net mvc 3.

+0

Các bạn đã thử chơi với [ ''] (http: // www .iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits)? Tôi biết đó là một phiên bản hoặc hai trở lại từ IIS7, nhưng có thể có một số xung đột tương tự. –

+0

vâng tôi đã thêm yêu cầu nàyLimits maxUrl = "512" trong system.webserver – Qudoos

Trả lời

9

Vấn đề của bạn là bạn không sử dụng chuỗi truy vấn mà là đường dẫn. Đường dẫn có độ dài tối đa 255.

+0

[Theo MSDN] (http://msdn.microsoft.com/en-us/library/ms689462%28v=vs.90%29. aspx) chiều dài tối đa mặc định (theo byte) là 4096 –

+0

Bạn có thể đúng, nhưng điều đó không giải thích tại sao nó hoạt động trên Cassini. Trên win 7 của tôi phát triển máy nó hoạt động với Cassini nhưng không hoạt động khi tôi chạy cùng một trang web dưới IIS 7. Nếu giới hạn là trên đường dẫn, nó phải ở cấp hệ điều hành. Không? – Qudoos

+0

@Brad, vâng tôi đọc và đã chơi với số lượng thực sự lớn để xem nó hoạt động – Qudoos

21

Cái này là dành cho hậu thế và để theo dõi vấn đề của riêng tôi. Tuy nhiên, câu trả lời này lại được nói trong một câu trả lời khác, không rõ ràng.

Tôi đã gặp vấn đề tương tự khi kết thúc. Câu trả lời là tất nhiên để chuyển đoạn URL dài thành chuỗi truy vấn. Dễ xử lý hơn.

Tuy nhiên, vấn đề là HTTP.sys thậm chí không cho phép yêu cầu thông qua vì một phân đoạn của URL quá 260 ký tự. Tuy nhiên, chúng tôi vẫn phải hỗ trợ nó.

Bạn có thể thay đổi cài đặt đó trong sổ đăng ký. Khi bạn khởi động lại, url sẽ hoạt động.

Registry:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters] 
"UrlSegmentMaxLength"=dword:00000400 

này một cách hiệu quả sẽ thiết lập chiều dài phân đoạn để 1024.

Source

+5

*** *** Đây là giải pháp *** thực *** **! Hoạt động như một nét duyên dáng (Win8, IIS 8) –

+2

Điều này definatelly làm việc trên Windows Server 2012. Chỉ có sự khác biệt là chìa khóa không có ở đó vì vậy nó cần phải được thêm vào ... – vidriduch

+1

@vidriduch Có nó cần phải được tạo ra. Giống như hầu hết các cài đặt đăng ký, nếu khóa không có, mặc định sẽ được áp dụng. Mặc định ở đây là 260. :) –

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