在我之前的問題HERE之後,我找到了解決方案(以及它的一部分)。從silverlight調用Java Web服務拋出異常
下面是Java的部分代碼:
@WebService
公共類爲MyWebService {
@WebMethod 公共字符串myMethod的(){
回報的 「Hello World」; }
@WebMethod
public int Add(@WebParam(name="a") int a,
@WebParam(name="b") int b)
{
return a + b;
}
public static void main(String[] args)
{
String address = "http://127.0.0.1:8023/_WebServiceDemo";
Endpoint.publish(address, new MyWebService());
System.out.println("Listening: " + address);
}
}
,這裏是Silverlight的部分:
private void SearchResultList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
MyWebServiceClient proxy = new MyWebServiceClient();
proxy.AddCompleted += proxy_AddCompleted;
proxy.AddAsync(2, 3);
}
void proxy_AddCompleted(object sender, AddCompletedEventArgs e)
{
txtSearch.Text = e.Result.ToString();
}
但是當我運行此,e.Result拋出異常。 我在想什麼/我該如何解決?
請注意,此代碼在C#控制檯應用程序(當它不是異步時)完美運行。但是當我運行異步代碼時,它不起作用。
在此先感謝。
你是完全正確的。除了我發現ExceptionException來自您提到的CommunicationException之外,經過一些調查。我發現我必須創建一個clientaccesspolicy.xml文件並將其放入應用程序的根文件夾中。我將它複製到任何我想到的地方,但仍然沒有機會! – 2011-04-09 14:31:34
策略文件必須放置在呼叫目標處,您的情況是Web服務託管站點。正如後續發佈中提到的,這似乎不適用於自託管Web服務。 – jCoder 2011-04-09 20:14:46
我讀過一些可能的地方。我想我應該把它放在Java服務器的根文件夾(我不知道它在哪裏,因爲它不是IIS和Apache,我不知道Eclipse使用哪個服務器) - 更多內容在其他文章 – 2011-04-09 20:38:57