• 创建WebService服务--.NET Core与SoapCore 及遇到的问题(二)


    这一篇,我们看一下.net core如何创建WebService,首先创建一个.net core的web应用。

    项目创建好以后,需要通过NuGet加入SoapCore

    新建一个类,用于返回和接收参数

    [DataContract]

    public class StudentModel

    {

      /// <summary> /// 学号 ///</summary>

      [DataMember]

      public string Sno { get; set; }

      /// <summary> /// 姓名 /// </summary>

      [DataMember]

      public string Name { get; set; }

      /// <summary> /// 班级 /// </summary>

      [DataMember]

      public string Grade { get; set; }

      /// <summary> /// 生日 /// </summary>

      [DataMember]

      public DateTime Birthday { get; set; }

    }

    添加接口约束IContract

    [ServiceContract]

    public interface IContract

    {

      /// <summary> /// 加法接口/// </summary>

      [OperationContract]

      int Add(int a,int b);

    }

    添加服务实现类StudentService,来实现我们的约定服务接口。

    public class StudentService : IContract

    {

      public int Add(int a,int b)

      {

         return a+b;

      }

    }

    在netcore中添加注入,修改 Startup.cs类中的ConfigureServices方法

    services.TryAddSingleton<IContract, StudentService>();

    添加服务发布接口地址,修改Startup.cs类中的Configure方法,在最后修改UseEndpoints

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

    {

       if (env.IsDevelopment())

      {

        app.UseDeveloperExceptionPage();

      }

      app.UseRouting();

      app.UseSoapEndpoint<IContract>("/StudentService.asmx", new BasicHttpBinding(), SoapSerializer.XmlSerializer);

    }

    之后运行就好,因为.net core 和.net framework版本不同,所以在.net core的显示页面中会与.net framework 会有不同。

    问题:当接口接收的是Xml数据并且数量过大时,会报错。

    报错信息:
                  FaultException:The maxinum string content length quota(8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader .Line 1,position135    
             解决:在.net Core项目中startup.cs文件的Configure方法中
             var binging = new BasicHttpBinding();
             binging.ReaderQuotas.MaxStringContentLength = int.MaxValue;
        app.UseSoapEndpoint<IContract>("/StudentService.asmx", binging, SoapSerializer.XmlSerializer);
     
     
  • 相关阅读:
    join
    PS1-4
    tftp + bras
    awk调用shell
    curl
    ssh
    查看cp进度,使用watch
    tftp
    scp 链接文件的问题 + tar
    mysql必知必会(三、使用mysql)
  • 原文地址:https://www.cnblogs.com/om88mo/p/14871382.html
Copyright © 2020-2023  润新知