2010-07-19 7 views
12

Tôi có trang web .NET 2.0 (VB) chạy trong IIS6 (XP Pro SP2) và .NET 3.5 (được định cấu hình dưới dạng .NET2 trong tab ASP.NET của IIS)) lưu trữ dịch vụ web ASMX.Yêu cầu không thành công với trạng thái HTTP 401: Không được phép

Trong Chrome, tôi có thể gọi ASMX và gọi phương thức web thành công. Tuy nhiên, khi gọi các phương thức web bằng mã, từ trang web .NET 2.0, tôi nhận được:

Yêu cầu không thành công với trạng thái HTTP 401: Không được phép.

Làm cách nào để giải quyết vấn đề này?

Trả lời

19

Bạn cần đặt thông tin đăng nhập trong ứng dụng khi bạn khởi tạo đối tượng webService.

Something như webService.UseDefaultCredentials = true

này sẽ thiết lập các thông tin được yêu cầu cho người sử dụng hiện tại thực hiện các ứng dụng.

+0

Điều này dành cho cient được tạo trong VB/C# .. điều gì về Java, nói rằng tôi cần kết nối với dịch vụ web này thông qua ứng dụng di động. Trong trường hợp đó, tôi không thể nhận được thông tin đăng nhập Mặc định. – rDroid

+0

bạn đã tiết kiệm rất nhiều thời gian. Cảm ơn bạn. – DelphiLearner

+0

Ôi Chúa ơi. Chúng tôi đã có mã trong trang ASP.Net của chúng tôi mà không có cài đặt "UseDefaultCredentials" này trong nhiều năm và nó luôn hoạt động tốt. Hôm qua, một bản vá bảo mật của Microsoft đã được áp dụng đột ngột, chúng tôi nhận được lỗi "401 trái phép" mỗi lần. Thêm một dòng mã này đã khắc phục được vấn đề ... thực sự lạ. –

1

Trong IIS 7, bật xác thực ẩn danh và bạn sẽ có thể gỡ lỗi.

3
webService.UseDefaultCredentials = true 

Điều này phù hợp với tôi.

0

im am thử nghiệm theo cách này:

CheckListService.CheckList chkSrvice = new CheckListService.CheckList() { 
    UseDefaultCredentials = true }; 
+2

Bạn có thể giải thích ** lý do tại sao ** tác phẩm này hoạt động không? – rayryeng

2

bạn có thể sử dụng này:

webservice.UseDefaultCredentials = true; 

nếu không hoạt động, sử dụng mã dưới đây thay vì các mã trên

webservice.Credentials = new NetworkCredential("userName", "password", "domain"); 
webservice.PreAuthenticate = true; 

lưu ý: Password tên truy cập và miền là chứng chỉ người sử dụng của người dùng truy cập đến webservice

do đó hãy chắc chắn rằng người dùng có quyền truy cập vào dịch vụ web

có lẽ người dùng là sử dụng cửa sổ

và bạn có thể lấy tên miền từ: nhấp chuột phải vào "MyComputer" và các thuộc tính tên miền là Tên máy tính hoặc Workgroup