我的ASP.Net网络表单中有一个RadGrid。 现在我想通过AjaxEnabledWCFService在客户端绑定它。 完成所有实现后,似乎通过响应检索数据 但不是在网格中显示它,而是显示像“方法不允许”的消息。
我无法找到此错误背后的实际原因,以及未填充数据的原因是什么。
以下是我的实施细节: - 我已将特定服务添加到脚本管理器,如下所示: -
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/services/CustomerListService.svc" />
</Services>
<Scripts>
<%--Needed for JavaScript IntelliSense in VS2010--%>
<%--For VS2008 replace RadScriptManager with ScriptManager--%>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
</Scripts>
</telerik:RadScriptManager>
然后将服务添加到RadGrid ClientEvents - DataBindings标记,如下所示: -
<DataBinding SelectMethod="GetCustomers" Location="~/services/CustomerListService.svc"
SortParameterType="Linq" FilterParameterType="Linq">
</DataBinding>
我有一个名为orderListService的服务,其中DataContract作为订单, ServiceContract作为GetCustomers()如下代码: -
例如:
[ServiceContract(Namespace =“”)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 公共类CustomerListService {
[OperationContract]
public List<Customer> GetCustomers()
{
CustomerData CustData = new CustomerData();
System.Data.DataTable dt = CustData.GetCustomersList(1, 1, "");
List<Customer> Customerist = new List<Customer>();//Here Customer is DataContract
foreach (System.Data.DataRow dr in dt.Rows)
{
Customer cust = new Customer();
SetPropertiesFromOrderRow(cust, dr);//set all the property values from DataRow to Order
CustomerList.Add(cust);
}
return CustomerList;
}
}
配置文件中的设置如下: -
<endpointBehaviors>
<behavior name="ClientSideBindingTest.services.CustomerListServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
<services>
<service name="ClientSideBindingTest.services.CustomerListService">
<endpoint address="" behaviorConfiguration="ClientSideBindingTest.services.CustomerListServiceAspNetAjaxBehavior"
binding="webHttpBinding" contract="ClientSideBindingTest.services.CustomerListService" />
</service>
</services>
如果有人在这里有任何建议,请告诉我,我还需要知道如何将参数传递给服务方法 根据提供的参数获取值。
提前致谢。
答案 0 :(得分:0)
我在这里得到的问题的解决方案是下面描述的细节: -
原因:这个“方法不允许”背后的主要原因。可以通过在web.config文件中设置配置来启用WCF的跟踪功能后捕获。 我在这里描述的内容: -
描述:当我将DB中的值分配给该字段时,我有一个DateTime类型字段,因此对于未分配默认值'01 / 01/0001 00:00:000'的字段,可以避免分配NULL值正在自动分配到该字段。但是当这个字段被传递给jSon时,这个日期是json Date字段的范围之外,这导致了这里的实际错误,并且它会抛出异常和服务中断。
解决方案:解决方案很简单,只需要将DateTime字段设置为Nullable,以便它将采用NULL而不是为字段分配默认的超出范围值,这解决了我的问题。感谢WCF跟踪工具,它帮助我跟踪确切的错误。