为什么 405 方法不允许错误发生在 wcf 中

本文关键字:wcf 错误 方法 不允许 为什么 | 更新日期: 2023-09-27 18:36:38

这是我的类

[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 方法,就像

<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 中获取结果并在数据库中插入数据是成功的,但是当我通过远程使用它时,会出现错误,这是不允许的方法????如何做到这一点???

为什么 405 方法不允许错误发生在 wcf 中

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

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

并尝试一下。