【问题标题】:Why 405 method not allowed error occur in wcf?为什么在 wcf 中出现 405 method not allowed 错误?
【发布时间】:2015-01-08 07:55:41
【问题描述】:

这是我的课

[DataContract()]
    public class Test
    {
        [DataMember]
        public string UserName { get; set; }

    }

这是我的 svc.cs 页面函数

public string Testpost(Test T)
        {
            string User_name;
            User_name = T.UserName;

            DataUtility du = new DataUtility();

            string[] Parameters = new string[2] { "@UserName", "@Result" };
            string[] DbTypes = new string[2] { "varchar", "varchar" };
            string[] ParameterTypes = new string[2] { "input", "Output" };
            string[] values = new string[2] { User_name, "" };
            string[] Lengths = new string[2] { "100", "50" };


            String Praveen = du.executeNonQuerry(CommandType.StoredProcedure, "InsertTest", Parameters, DbTypes, ParameterTypes, values, Lengths);

            if (Praveen == "1")
            {
                return "Insertion Success";
            }
            else
            {
                return "Failed Insertion";
            }


        }

这是我的 uri 模板

 [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/Testpost")]
        string Testpost(Test T);

这是我的配置

<service name="SkyService.Customer" behaviorConfiguration="Default">
        <endpoint address="" binding="webHttpBinding" contract="SkyService.ICustomer" behaviorConfiguration="webBehavior" bindingConfiguration="WCFServiceBinding"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>

我通过 j 查询 ajax 访问 post 方法,如 as

<script type="text/javascript">
         $(function () { 
             //var param = {"UserName":"Praveen"};

            var _Name = { "T": { "UserName": "LC" } };
            $.support.cors = true;
             $.ajax({
                 type: "POST",
                 url: "http://203.124.96.81/Track/Customer.svc/TestPost",

                 //data: {"UserName":"Praveen"},
                 //contentType: "application/json",
                 //dataType: 'jsonp',

                 data: JSON.stringify(_Name),
              returncallback: false,
                 contentType: "application/json",
                 dataType: "jsonp",


                 success: function (data) {
                     alert(data.Text);
                     console.log(data);

                 },
                 error: function (XMLHttpRequest, textStatus, errorThrown) {
                     //alert(XMLHttpRequest+" "+textStatus+" "+errorThrown);
                     console.log(XMLHttpRequest);
                     console.log(textStatus);
                     console.log(errorThrown);

                 }
             });
         })

    </script>

服务在 localhost 中获得结果,并且在数据库中插入数据是成功的,但是当我通过远程使用它时,会出现错误 METHOD NOT ALLOWED????这个怎么办???

【问题讨论】:

    标签: c# jquery ajax wcf


    【解决方案1】:

    我认为这是一个跨域问题。

    请按照http://www.dotnet-tricks.com/Tutorial/wcf/X8QN260412-Calling-Cross-Domain-WCF-Service-using-Jquery.html中的说明进行操作

    试试看。

    【讨论】:

    • 我很乐意提供帮助。如果我的答案有效,请将其设置为问题的答案,这样没有人会尝试解决此问题。
    • 我的服务在 Mozilla 上得到了正确的结果,但我今天检查了它在 IE 和 Chrome 上没有响应......
    猜你喜欢
    • 2011-03-31
    • 2016-04-12
    • 2017-06-14
    • 2011-05-14
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多