方法不允许。 AjaxEnabledSCFService上的错误

时间:2012-10-04 06:38:36

标签: asp.net ajax wcf telerik-grid

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

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

我在这里得到的问题的解决方案是下面描述的细节: -

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

描述:当我将DB中的值分配给该字段时,我有一个DateTime类型字段,因此对于未分配默认值'01 / 01/0001 00:00:000'的字段,可以避免分配NULL值正在自动分配到该字段。但是当这个字段被传递给jSon时,这个日期是json Date字段的范围之外,这导致了这里的实际错误,并且它会抛出异常和服务中断。

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