WCF 405方法不允许疯狂错误帮助!

时间:2010-03-15 19:45:34

标签: wcf asp.net-ajax

我疯了我已经阅读了10篇关于stackoverflow的文章,我正在以宁静的方式调用webservice并且应该在服务和webconfig中启用它,所以我这样做但是只要我添加[WebGet( )]属性我得到这个疯狂的错误,如果我删除它然后服务得到无缝调用

我正在使用

  • VS 2010 RC 1
  • IIS 7
  • Windows 7

这是我的代码

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode    
=AspNetCompatibilityRequirementsMode.Allowed)]
public class Service2
{

[OperationContract]
[WebGet()]
public List<Table1> GetCustomers(string numberToFetch)
{
    using (DataClassesDataContext context = new DataClassesDataContext())
    {

        return context.Table1s.Take(numberToFetch).ToList( );
    }
}

}

和我的ASPX页面代码

<body xmlns:sys="javascript:Sys"   
    xmlns:dataview="javascript:Sys.UI.DataView">  
  <div id="CustomerView"   
      class="sys-template"  
      sys:attach="dataview"  
      dataview:autofetch="true"  
      dataview:dataprovider="Service2.svc"  
      dataview:fetchParameters="{{ {numberToFetch: 2} }}"  
      dataview:fetchoperation="GetCustomers">  
      <ul>  
          <li>{{name}}</li>  
      </ul>  
  </div> 

和我的Web.config代码

    <system.serviceModel>
    <behaviors>
        <endpointBehaviors>
            <behavior name="Service2AspNetAjaxBehavior">
                <enableWebScript />
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
        multipleSiteBindingsEnabled="true" />
    <services>
        <service name="Service2">
            <endpoint address="" behaviorConfiguration="Service2AspNetAjaxBehavior"
                binding="webHttpBinding" contract="Service2" />             
        </service>
    </services>
</system.serviceModel>

非常感谢帮助

1 个答案:

答案 0 :(得分:2)

尝试添加方法修饰:

[WebInvoke(Method = "GET")]

此外,如果您尝试向其他域或端口上的服务发出请求,则会在Firefox中遇到跨域问题。因此,如果您的Web应用程序在localhost:80运行且您的WCF服务设置为localhost:10305,则Firefox将返回405。