当前位置: 首页 > news >正文

WCF webHttpBinding is open for web browser and wpf

//D:\C\WcfService3\WcfService3\Web.config
<?xml version="1.0"?>
<configuration><appSettings><add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /></appSettings><system.web><compilation debug="true" targetFramework="4.8" /><httpRuntime targetFramework="4.8"/></system.web><system.serviceModel><bindings><webHttpBinding><binding name="RestBinding"maxReceivedMessageSize="2147483647"maxBufferSize="2147483647"><readerQuotasmaxStringContentLength="2147483647"maxArrayLength="2147483647"/></binding></webHttpBinding>             </bindings><services><service name="WcfService3.BookService"><endpoint address=""binding="webHttpBinding"bindingConfiguration="RestBinding"behaviorConfiguration="RestBehavior"contract="WcfService3.IBookService"/></service></services><behaviors><serviceBehaviors><behavior><!-- To avoid disclosing metadata information, set the values below to false before deployment --><serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/><!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information --><serviceDebug includeExceptionDetailInFaults="false"/></behavior></serviceBehaviors><endpointBehaviors><behavior name="RestBehavior"><webHttp/></behavior></endpointBehaviors></behaviors><!--<protocolMapping><add binding="basicHttpsBinding" scheme="https" /></protocolMapping>--><serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /></system.serviceModel><system.webServer><modules runAllManagedModulesForAllRequests="true"/><!--To browse web app root directory during debugging, set the value below to true.Set to false before deployment to avoid disclosing web app folder information.--><directoryBrowse enabled="true"/></system.webServer></configuration>//D:\C\WcfService3\WcfService3\Models\Book.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Web;namespace WcfService3.Models
{[DataContract]public class Book{[DataMember]public long Id { get; set; }[DataMember]public string Name {  get; set; }[DataMember]public string ISBN { get; set;  }[DataMember]public string Author { get; set;  }[DataMember]public string Abstract {  get; set; }[DataMember]public string Comment {  get; set; }[DataMember]public string Content {  get; set; }[DataMember]public string Summary { get; set;  }[DataMember]public string Title {  get; set; }[DataMember]public string Topic {  get; set; }}
}//D:\C\WcfService3\WcfService3\IBookService.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using WcfService3.Models;namespace WcfService3
{// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IBookService" in both code and config file together.
    [ServiceContract]public interface IBookService{[OperationContract]//[WebGet(UriTemplate="GetBooksList?cnt={cnt}",RequestFormat =WebMessageFormat.Json,ResponseFormat =WebMessageFormat.Json)][WebGet(UriTemplate = "GetBooksList?cnt={cnt}",ResponseFormat = WebMessageFormat.Json)]List<Book> GetBooksList(int cnt);}
}//D:\C\WcfService3\WcfService3\BookService.svc.cs
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Threading;
using WcfService3.Models;namespace WcfService3
{// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "BookService" in code, svc and config file together.// NOTE: In order to launch WCF Test Client for testing this service, please select BookService.svc or BookService.svc.cs at the Solution Explorer and start debugging.public class BookService : IBookService{static long idx = 0;private long GetIncrementIdx(){return Interlocked.Increment(ref idx);}public List<Book> GetBooksList(int cnt){List<Book> bksList = new List<Book>();for (int i = 0; i < cnt + 1; i++){long a = GetIncrementIdx();bksList.Add(new Book(){Id = a,Name = $"Name_{a}",ISBN = $"ISBN_{a}",Author = $"Author_{a}",Abstract = $"Abstract_{a}",Comment = $"Comment_{a}",Content = $"Content_{a}",Summary = $"Summary_{a}",Title = $"Title_{a}",Topic = $"Topic_{a}"});}return bksList;}}
}

 

 

http://localhost:50704/BookService.svc/getbookslist?cnt=100000

 

 

image

 

 

 

 

 

 

image

 

 

 

<Window x:Class="WpfApp24.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp24"mc:Ignorable="d"Title="MainWindow" WindowState="Maximized"><Window.DataContext><local:MainVM/></Window.DataContext><Grid><ListBox ItemsSource="{Binding BooksCollection}"VirtualizingPanel.IsVirtualizing="True"VirtualizingPanel.VirtualizationMode="Recycling"VirtualizingPanel.CacheLength="5,5"VirtualizingPanel.CacheLengthUnit="Item"ScrollViewer.IsDeferredScrollingEnabled="True"ScrollViewer.CanContentScroll="True"UseLayoutRounding="True"SnapsToDevicePixels="True"><ListBox.Resources><Style TargetType="ListBoxItem"><Setter Property="FontSize" Value="20"/><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter Property="FontSize" Value="30"/><Setter Property="Foreground" Value="Red"/></Trigger></Style.Triggers></Style></ListBox.Resources></ListBox></Grid>
</Window>using Newtonsoft.Json;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Net;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml.Schema;namespace WpfApp24
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}}public class MainVM : INotifyPropertyChanged{public MainVM(){string url = "http://localhost:50704/BookService.svc/getbookslist?cnt=1000000";WebClient client = new WebClient();client.DownloadStringCompleted += Client_DownloadStringCompleted;client.DownloadStringAsync(new Uri(url));}private void Client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e){var jsonStr = e.Result;BooksCollection=new ObservableCollection<Book>(JsonConvert.DeserializeObject<List<Book>>(jsonStr));}private ObservableCollection<Book> booksCollection;public ObservableCollection<Book> BooksCollection{get{return booksCollection;}set{if(value!=booksCollection){booksCollection = value;OnPropertyChanged();}}}public event PropertyChangedEventHandler? PropertyChanged;private void OnPropertyChanged([CallerMemberName] string propName=""){var handler = PropertyChanged;handler?.Invoke(this, new PropertyChangedEventArgs(propName));}}[DataContract]public class Book{[DataMember]public long Id { get; set; }[DataMember]public string Name { get; set; }[DataMember]public string ISBN { get; set; }[DataMember]public string Author { get; set; }[DataMember]public string Abstract { get; set; }[DataMember]public string Comment { get; set; }[DataMember]public string Content { get; set; }[DataMember]public string Summary { get; set; }[DataMember]public string Title { get; set; }[DataMember]public string Topic { get; set; }public override string ToString(){return $"Id:{Id},Name:{Name},ISBN:{ISBN},Author:{Author},Comment:{Comment},Content:{Content},Summary:{Summary},Title:{Title},Topic:{Topic}";}}
}

 

 

 

 

 

 

image

 

 

 

image

 

http://www.jsqmd.com/news/710835/

相关文章:

  • LLM工具调用面试篇4
  • Box86深度解析:ARM架构上的x86用户空间模拟器技术实现机制
  • 英语单词发音MP3音频批量下载方案:构建海量语音库的技术实现
  • 突破QQ音乐限制:高效QMCFLAC转MP3完整指南
  • HCLA第五次作业
  • 深度解析:如何通过三层架构设计实现Cursor Pro功能的技术实现方案
  • 5分钟解锁Windows桌面新美学:用TranslucentTB打造你的专属透明任务栏
  • 山东大学软件学院项目实训-基于语言大模型的智能居家养老健康守护系统-个人博客(三)
  • 5分钟搞定!魔兽争霸III WarcraftHelper插件完全指南:解锁300帧+宽屏完美体验
  • 告别调参玄学:用PANNs预训练模型搞定音频分类,附AudioSet实战代码
  • 第八届智源大会即将在6月12日-13日正式开启
  • SeanLib系列函数库-W25QXX
  • 从LeetCode到真实项目:DAG(有向无环图)在任务调度和依赖管理中的实战避坑指南
  • 人工海马网络(AHN)架构解析与长序列处理优化
  • 写给Ivy(我自己你信吗:))啊······
  • Bibata Gruvbox Yellow光标主题:Linux桌面美化与视觉统一方案
  • 2026降AI率工具实测:AI占比90%也能稳降到个位数
  • 终极指南:用Ryujinx模拟器在电脑上免费畅玩Switch游戏的完整攻略
  • Java 基础(十一)反射
  • SILENTTRINITY:基于Python异步架构的现代C2渗透测试框架解析
  • Windows电脑终极指南:如何用APK安装器直接运行安卓应用
  • 【Python】错误和异常
  • 亲测5款论文降AI工具:AIGC疑似度从90%降到4%实用指南
  • LycheeMemory:高效处理长上下文任务的创新解决方案
  • 星穹铁道跃迁记录分析工具:5分钟掌握抽卡数据可视化
  • Git 命令大全测试
  • 后端全栈轻松写前端!用 Vue,自动生成可维护 React
  • 终极RPG Maker解密工具:如何快速提取游戏资源与项目文件
  • 别再只用filter: blur()了!聊聊backdrop-filter在Vue3音乐播放器项目中的实战应用
  • RAG 工程实践:分块策略、Rerank、混合检索,这些细节决定效果上限