0

我的 ASP.Net Web 表单中有一个 RadGrid。现在我想通过 AjaxEnabledWCFService 在客户端绑定它。在完成所有实现之后,似乎正在通过响应检索数据,而不是在网格中显示它,而是显示类似“方法不允许。”的消息。

我无法找到此错误背后的实际原因,以及未填充 dat 的原因是什么。

以下是我的实现细节:- 我已将特定服务添加到脚本管理器,如下所示:-

<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>

如果有人在这里有任何建议,请告诉我,我还需要知道如何将参数传递给服务方法以根据提供的参数获取值。

提前致谢。

4

1 回答 1

0

我得到了我的问题的解决方案,详细信息如下所述:-

原因:此“方法不允许”背后的主要原因。在我通过在 web.config 文件中设置配置启用 WCF 的跟踪功能后可能会被捕获。我在这里描述的是它所追踪的内容:-

描述:当我从 DB 向该字段分配值时,我有一个 DateTime 类型字段 NULL 值被避免分配,因此对于未分配默认值“01/01/0001 00:00:000”的字段,将自动分配分配给该领域。但是当这个字段被传递给 json 时,这个日期超出了 json Date 字段的范围,这导致了这里的实际错误,并在那里引发了异常和服务中断。

解决方案:解决方案很简单,只是我需要将 DateTime 字段设置为 Nullable,以便它将采用 NULL 而不是为该字段分配默认的超出范围的值,这解决了我的问题。感谢 WCF 跟踪工具,它帮助我跟踪确切的错误。

于 2013-01-18T07:19:25.483 回答