2009-08-21 24 views
6

điều này sẽ ăn cắp sự tỉnh táo của tôi. Tôi đã trải qua hầu hết mọi thứ tôi tìm thấy trên web và không tiến thêm một bước nào. Sự thất vọng không đủ mạnh để mô tả sự thất bại này xuất hiện bất kể tôi đang làm gì.CommunicationException khi gọi WCF từ Silverlight

Nhưng sau cái kia.

Tôi có một W2008 máy Server 64bit với VS 2008 SP1 phiên bản tiếng Đức, Silverlight cụ 3,0

Tôi muốn tiêu thụ một WCF Service từ một ứng dụng Silverlight. Và, như nhiều người, tôi nhận được Ngoại lệ Giao tiếp không mang tính mô tả rất khó chịu khi kết thúc cuộc gọi.

Tôi đã tạo một WCF-Service mới, được đặt tên là Điểm cuối và đặt ràng buộc của nó thành basicHttpBinding. Tôi đã thêm thuộc tính

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

đến lớp Service1 và dòng

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 

đến System.ServiceModel trong App.config

tôi rời mọi thứ khác vì nó là và thử nghiệm các dịch vụ qua WCF-client thành công. Sau đó, tôi được công bố nó để IIS7 địa phương của tôi để http://localhost/WCFTest

Trong ứng dụng Silverlight của tôi, tôi đã thêm các dịch vụ cho Servicereference sử dụng http://europa.therestofmydomain/WCFTest/WcfTest.Service1.svc

tôi đã thêm đoạn mã sau cho khách hàng:

using OSMDeepEarthExample.ServiceReference1; 

... 
Service1Client s1 = new Service1Client(); 
s1.GetDataCompleted += new System.EventHandler<GetDataCompletedEventArgs>(s1_GetDataCompleted); 
s1.GetDataAsync(20); 

void s1_GetDataCompleted(object sender, GetDataCompletedEventArgs e) 
{ 
    CountFetchedData.Text = e.Result; 
} 

tôi đã thêm a clientaccesspolicy.xml VÀ một tệp crossdomain.xml tới webroot (C: \ inetpub \ wwwroot)

clientaccesspolicy.xml:

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from> 
     <domain uri="*"/> 
     </allow-from> 
     <grant-to> 
     <resource path="/" include-subpaths="true"/> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 

crossdomain.xml:

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*" /> 
    <allow-http-request-headers-from domain="*" headers="SOAPAction" /> 
</cross-domain-policy> 

tôi khởi động lại IIS. Hai lần. Thường xuyên.

Tôi đã cài đặt Trình trợ giúp phát triển web để có thể nhận được thông tin có ý nghĩa hơn về GÌ là sai. Nhưng điều này làm cho IE sụp đổ.

Tôi hết ý tưởng. Và sớm bắt đầu được tích cực chống lại phần cứng của tôi. Xin hãy giúp phần cứng của tôi!

Như John lưu ý, tôi đã quên toàn bộ ERRORMESSAGE ở đây nói:

Fehler beim Senden einer Anforderung một den URI "http://europa.therestofmydomain/WCFTest/WcfTest.Service1.svc". Ursache ist möglicherweise, dass ohne chết entsprechende domänenübergreifende Richtlinie oder mit einer nicht für SOAP-Dienste geeigneten Richtlinie domänenübergreifend auf einen Dienst zugegriffen wurde. Möglicherweise müssen Sie sich den den Besitzer des Diensts wenden, có thể được sử dụng để tạo ra một cái gì đó tuyệt vời. Hãy xem nó như thế nào? Dieser Fehler kann auch durch Verwendung von internen Thực hiện các thao tác trên mạng. Weitere Thông tin chi tiết tìm kiếm Sie in der inneren Ausnahme.

Tóm lại, nó cho biết có thể thiếu quy tắc tên miền.

+0

Trong số tất cả sự thất vọng đó, bạn đã không đăng một lần ngoại lệ bạn nhận được. Ngoại lệ đầy đủ. Kết quả của ex.ToString(). –

+0

Bạn nói đúng, tôi đã thêm thông báo lỗi vào cuối bài đăng của tôi – Aaginor

Trả lời

7

Whew, tôi đã làm được!

Tôi đã xóa tệp clientaccesspolicy.xml khỏi webroot, chỉ để lại crossdomain.xml tại đó. Thật là một người nhận thức! Cảm ơn bạn đã lắng nghe, nó đã giúp tôi xóa bỏ tâm trí của tôi. Tôi hy vọng một người nào đó với một vấn đề tương tự sẽ tìm thấy những văn bản hữu ích một chút!

+0

điều này cũng hoạt động với vs2010, sl4, w7. sau nhiều giờ tôi đã tìm ra giải pháp của bạn. dankeschööööön – devio

+0

Man ... CẢM ƠN BẠN. Điều này cũng làm việc cho tôi. Có ai có một lời giải thích hợp lý cho hành vi này (IMHO, lạ)? –

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