2010-02-22 26 views
5

Tôi vừa thử thêm một WebService (asmx based) từ một dự án WebForms vào một dự án MVC mới. Tôi không thể dường như để có được các webservice asmx trong IE?Dịch vụ web chuẩn (asmx) có hoạt động với MVC không?

Trong MVC, thao tác này có giống nhau hay không, tôi có dịch vụ trong thư mục Dịch vụ, đây có nên là Chế độ xem hoặc công cụ asmx này hoạt động ngoài định tuyến 'MVC' không?

Cập nhật:

tôi thiết lập các WebService ban đầu thả trong file .asmx vào một máy chủ thử nghiệm, thời gian gần đây thiết lập với Net 4.0 cho các dự án VS2010 MVC 2. (Windows Server 2003 IIS 6)

Cùng một Webservice trên máy phát triển (VS 2010) có thể xem được không? Bất kỳ ý tưởng về sự khác biệt, có thể là một vấn đề thiết lập?

+0

Tệp asmx chỉ chứa chỉ thị "<% @ WebService ...", lớp được chứa tất cả một dll trong thư mục bin ... –

+0

Tôi không thể nhận được, như x để làm việc, ngay cả khi tôi chỉ đã thêm một dịch vụ Web HelloWorld mới/cơ bản, tôi đã chuyển đổi nó thành một dịch vụ WCF và không thể nhìn thấy nó, do đó sẽ tiến hành với điều đó. –

+1

tốt. Các dịch vụ web ASMX được Microsoft coi là "công nghệ kế thừa". Tất cả phát triển dịch vụ web mới nên sử dụng WCF. –

Trả lời

1

Trả lời câu hỏi của riêng tôi ..

tôi có thể xem các dịch vụ WCF khi tạo ra một dịch vụ cơ bản (và không thể xem các dịch vụ asmx)

Kể từ WCF được coi là con đường để đi dù sao, tôi đang làm điều đó.

Tôi đã không thuyết phục được mã asmx hoạt động.

1

Nếu bạn muốn giải pháp nhanh chóng/dễ dàng/bẩn, hãy kéo Dịch vụ ASMX ra khỏi Định tuyến MVC bằng cách nào đó.

Nếu bạn muốn làm mọi thứ theo cách tốt hơn, hãy rút logic ra khỏi dịch vụ ASMX và tạo một trang mới cho ứng dụng đó trong ứng dụng MVC của bạn. Sau đó bạn có thể thực hiện logic trong Controller của bạn và cho phép View xử lý trả về thông báo SOAP (hoặc bạn có thể đi với JSON tùy thuộc vào người đang sử dụng dịch vụ).

+0

Tất cả logic đều nằm trong lớp WebService trong một dll.Webservice được gọi bởi một ứng dụng Silverlight, không chắc chắn làm thế nào điều này sẽ được thực hiện với một Controller? –

0

Nó sẽ hoạt động bên ngoài định tuyến MVC. Chỉ cần tạo một thư mục với các tập tin asmx sẽ được sufficiant. Tôi có một thư mục 'webservices' bên trong dự án của tôi, và nó hoạt động rất tốt! Không cần thiết lập định tuyến để bỏ qua đường dẫn, tệp tồn tại trên máy chủ.

2

Theo Scott Hanselman, yêu cầu là theo mặc định không xử lý bởi các cơ chế định tuyến ASP.NET MVC:

Tại sao không ASP.NET MVC lấy theo yêu cầu? Hai lý do. Đầu tiên, có một tùy chọn trên RouteCollection được gọi là RouteExistingFiles. Nó được đặt thành false theo mặc định, nguyên nhân khiến ASP.NET MVC tự động bỏ qua định tuyến khi một tệp tồn tại trên đĩa. (Source)

Điều này cho thấy có vấn đề ở một nơi khác.

1

CÓ, tôi đã tạo dự án cơ sở, sau đó tôi nhấp chuột phải vào tên dự án và thêm tệp webservice với bản demo của hello world trong đó. Nếu bạn xem tập tin đó trong trình duyệt thì nó hoạt động tốt.

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