代码之家  ›  专栏  ›  技术社区  ›  DevMania

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

  •  0
  • DevMania  · 技术社区  · 15 年前

    我快发疯了,我也读过10多篇关于stackoverflow的文章,说我正在以restful方式调用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> 
    

    还有我的网络。配置代码

        <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 回复  |  直到 15 年前
        1
  •  2
  •   Phil Scholtes    15 年前

    尝试添加以下方法:

    [WebInvoke(Method = "GET")]
    

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