我的應用程序由一個包含silverlight控件的MVC3網站組成。 在MVC3應用程序中,我承載了一個WCF服務。我在Silverlight控件中使用該服務從數據庫獲取數據。從silverlight訪問WCF服務
在MVC web.config中的服務被定義爲:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="OnlineCustomersTracker.Services.CustomersTrackerServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="OnlineCustomersTracker.Services.CustomersTrackerService">
<endpoint address="" behaviorConfiguration="OnlineCustomersTracker.Services.CustomersTrackerServiceAspNetAjaxBehavior"
binding="webHttpBinding" contract="OnlineCustomersTracker.Services.CustomersTrackerService" />
</service>
</services>
我打電話的方法是:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Xml)]
public string DoWork()
{
// Add your operation implementation here
return "Work done";
}
在Silverlight我調用服務:
CustomersTrackerServiceClient client = new CustomersTrackerServiceClient(new BasicHttpBinding(),
new EndpointAddress(
"http://localhost:62535/Services/CustomersTrackerService.svc"));
client.DoWorkCompleted += new System.EventHandler<DoWorkCompletedEventArgs>(client_DoWorkCompleted);
client.DoWorkAsync();
當我從silverlight訪問服務我得到異常:遠程服務器返回一個錯誤:NotFound。
奇怪的部分是該服務正在從Web瀏覽器工作。我在Silverlight中做錯了 ?
我從Firefox跟蹤的呼叫和Silverlight控件是做一篇文章到服務地址:http://localhost:62535/Services/CustomersTrackerService.svc。看來我的服務只聽取獲取請求。有沒有辦法允許發佈請求...或者在Silverlight中配置服務來獲取請求?
您是否嘗試添加跨域和客戶端訪問策略文件?這有什麼區別嗎? –