Compare commits
No commits in common. "b5ebe51aa1fdcd7b82403408b727bb3e6fcc17dd" and "fd25d57be56900f0e02709d1a4e641837c3e3ab8" have entirely different histories.
b5ebe51aa1
...
fd25d57be5
@ -4,7 +4,7 @@
|
||||
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
xmlns:local="clr-namespace:chatclient"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<materialDesign:BundledTheme BaseTheme="Light" PrimaryColor="DeepPurple" SecondaryColor="Lime" />
|
||||
|
@ -87,12 +87,6 @@
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MaterialDesignLightSeparator" TargetType="Separator" BasedOn="{StaticResource {x:Type Separator}}">
|
||||
<Setter Property="Background" Value="#F0252526"/>
|
||||
<Setter Property="BorderBrush" Value="#F0252526"/>
|
||||
<Setter Property="Height" Value="1"/>
|
||||
</Style>
|
||||
|
||||
<!-- 托盘菜单样式 -->
|
||||
<Style x:Key="MaterialTrayMenu" TargetType="ContextMenu">
|
||||
<!--<Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}"/>-->
|
||||
|
@ -48,7 +48,7 @@ namespace chatclient.Data
|
||||
// 添加菜单项
|
||||
contextMenu.Items.Add(CreateMenuItem("打开程序", PackIconKind.WindowRestore, OpenApp_Click));
|
||||
contextMenu.Items.Add(CreateMenuItem("设置", PackIconKind.Cog, Settings_Click));
|
||||
contextMenu.Items.Add(new Separator { Style = (Style)Application.Current.Resources["MaterialDesignLightSeparator"] });
|
||||
contextMenu.Items.Add(new Separator { Style = (Style)Application.Current.Resources["Separator"] });
|
||||
//contextMenu.Items.Add(CreateMenuItem("Check for Updates", PackIconKind.Update, Updates_Click));
|
||||
//contextMenu.Items.Add(CreateMenuItem("Help", PackIconKind.HelpCircle, Help_Click));
|
||||
//contextMenu.Items.Add(new Separator { Style = (Style)Application.Current.Resources["MaterialDesignLightSeparator"] });
|
||||
|
@ -5,7 +5,6 @@ namespace chatclient.Data
|
||||
internal class Server
|
||||
{
|
||||
public const string ServerUrl = "http://127.0.0.1:5001";
|
||||
//public const string ServerIP = "175.24.191.172";
|
||||
public const string ServerIP = "127.0.0.1";
|
||||
public const int ServerPort = 52006;
|
||||
}
|
||||
|
@ -43,6 +43,13 @@
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="聊天室" FontSize="16" FontWeight="Bold"
|
||||
VerticalAlignment="Center" Margin="5,0" Cursor="Hand"/>
|
||||
<!--<Button x:Name="btnRefresh" Style="{StaticResource MaterialDesignIconButton}"
|
||||
ToolTip="刷新列表" Click="RefreshContacts_Click" Margin="5,0,10,0">
|
||||
<materialDesign:PackIcon Kind="Refresh"/>
|
||||
</Button>-->
|
||||
<!--<ComboBox x:Name="cmbContacts" Width="150" Margin="5,0"
|
||||
materialDesign:HintAssist.Hint="选择联系人"
|
||||
DisplayMemberPath="DisplayName"/>-->
|
||||
</StackPanel>
|
||||
</materialDesign:Card>
|
||||
|
||||
@ -137,20 +144,11 @@
|
||||
<StackPanel Margin="10">
|
||||
<TextBlock Text="设置" FontSize="20" FontWeight="Bold" Margin="0,0,0,12"/>
|
||||
<Separator Margin="0 0" Width="auto" Height="10" HorizontalAlignment="Stretch" VerticalAlignment="Top"/>
|
||||
<TextBlock Text="关于" x:Name="About" FontSize="20" FontWeight="Bold" Margin="0,0,0,12"/>
|
||||
<TextBlock Text="ChatX 聊天室" FontSize="16" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="版本 0.0.2" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="作者:DZY & 绪山七寻" Margin="0,0,0,10"/>
|
||||
<TextBlock Text="使用的第三方资源" FontSize="16" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="ChatX" Margin="0,0,0,2" FontSize="13"/>
|
||||
<TextBlock Text="├─ .NET 8.0" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="├─ WPF" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="├─ HarmonyOS Sans" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="├─ MaterialDesignThemes" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="│ ├─ MaterialDesignThemes.MahApps" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="│ └─ MaterialDesignThemes.Wpf" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="├─ log4net" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="└─ Hardcodet.NotifyIcon.Wpf" Margin="0,0,0,2"/>
|
||||
<TextBlock Text="关于" FontSize="20" FontWeight="Bold" Margin="0,0,0,12"/>
|
||||
<TextBlock Text="ChatClient 聊天室" FontSize="16" Margin="0,0,0,8"/>
|
||||
<TextBlock Text="版本 1.0.0" Margin="0,0,0,8"/>
|
||||
<TextBlock Text="作者:DZY & 绪山七寻" Margin="0,0,0,8"/>
|
||||
<TextBlock Text="本项目基于 .NET 8 和 MaterialDesignInXAML。" TextWrapping="Wrap" Margin="0,0,0,8"/>
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
@ -139,9 +139,9 @@ namespace chatclient
|
||||
var LoginResponse = JsonSerializer.Deserialize<LoginResultData>(msg);
|
||||
if (LoginResponse!.status == "succeed" && LoginResponse != null)
|
||||
{
|
||||
//token = LoginResponse.token;
|
||||
UserId = LoginResponse.userid ?? "Unid";
|
||||
UserName = LoginResponse.username ?? "Unnamed";
|
||||
token = LoginResponse.token ?? "NoToken";
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
|
||||
@ -273,50 +273,36 @@ namespace chatclient
|
||||
{
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
if (chat.status == "succeed")
|
||||
// 处理聊天消息
|
||||
if (chat.userid == UserId)
|
||||
{
|
||||
// 处理聊天消息
|
||||
if (chat.userid == UserId)
|
||||
var chatmessage = new ChatMessage
|
||||
{
|
||||
var chatmessage = new ChatMessage
|
||||
{
|
||||
Sender = chat.user ?? "未知用户",
|
||||
MsgType = MessageType.Text,
|
||||
Image = new BitmapImage(new Uri(chat.avatar ?? "pack://application:,,,/resource/user.png")),
|
||||
Content = chat.message ?? "(无内容)",
|
||||
Timestamp = chat.timestamp ?? DateTime.Now,
|
||||
Alignment = HorizontalAlignment.Right,
|
||||
SenderColor = new SolidColorBrush(Colors.Blue)
|
||||
};
|
||||
var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
|
||||
mainWindow?.Messages.Add(chatmessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
var chatmessage = new ChatMessage
|
||||
{
|
||||
Sender = chat.user ?? "未知用户",
|
||||
MsgType = MessageType.Text,
|
||||
Image = new BitmapImage(new Uri(chat.avatar ?? "pack://application:,,,/resource/user.png")),
|
||||
Content = chat.message ?? "(无内容)",
|
||||
Timestamp = chat.timestamp ?? DateTime.Now,
|
||||
Alignment = HorizontalAlignment.Left,
|
||||
SenderColor = new SolidColorBrush(Colors.Black)
|
||||
};
|
||||
var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
|
||||
mainWindow?.Messages.Add(chatmessage);
|
||||
}
|
||||
}
|
||||
else if (chat.status == "error_0")
|
||||
{
|
||||
Sender = chat.user ?? "未知用户",
|
||||
MsgType = MessageType.Text,
|
||||
Image = new BitmapImage(new Uri(chat.avatar ?? "pack://application:,,,/resource/user.png")),
|
||||
Content = chat.message ?? "(无内容)",
|
||||
Timestamp = chat.timestamp ?? DateTime.Now,
|
||||
Alignment = HorizontalAlignment.Right,
|
||||
SenderColor = new SolidColorBrush(Colors.Blue)
|
||||
};
|
||||
var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
|
||||
mainWindow?.QueueMessage("登录已退出");
|
||||
mainWindow?.Messages.Add(chatmessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
log.Error("反序列化聊天数据时返回了 null");
|
||||
var chatmessage = new ChatMessage
|
||||
{
|
||||
Sender = chat.user ?? "未知用户",
|
||||
MsgType = MessageType.Text,
|
||||
Image = new BitmapImage(new Uri(chat.avatar ?? "pack://application:,,,/resource/user.png")),
|
||||
Content = chat.message ?? "(无内容)",
|
||||
Timestamp = chat.timestamp ?? DateTime.Now,
|
||||
Alignment = HorizontalAlignment.Left,
|
||||
SenderColor = new SolidColorBrush(Colors.Black)
|
||||
};
|
||||
var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
|
||||
mainWindow?.QueueMessage("服务器返回了错误的聊天数据");
|
||||
mainWindow?.Messages.Add(chatmessage);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -378,7 +364,7 @@ namespace chatclient
|
||||
message = txtMessage.Text,
|
||||
msgtype = MessageType.Text,
|
||||
userid = UserId ?? "Unid", // 使用UserId作为发送者ID
|
||||
token = token
|
||||
token = token // 添加当前token
|
||||
};
|
||||
string ChatJsonData = JsonSerializer.Serialize(newChatMessage);
|
||||
byte[] dataBytes = Encoding.UTF8.GetBytes(ChatJsonData);
|
||||
|
@ -2,21 +2,19 @@
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net8.0-windows7.0</TargetFramework>
|
||||
<TargetFramework>net8.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<UseWPF>true</UseWPF>
|
||||
<ApplicationIcon>resource\chat.ico</ApplicationIcon>
|
||||
<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>embedded</DebugType>
|
||||
<Optimize>False</Optimize>
|
||||
<DebugType>full</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<DebugType>embedded</DebugType>
|
||||
<DebugType>full</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
BIN
chatclient/resource/Font/HarmonyOS_Sans/.DS_Store
vendored
BIN
chatclient/resource/Font/HarmonyOS_Sans/.DS_Store
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,16 +2,6 @@
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="chatserver.config.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
</configSections>
|
||||
<log4net configSource="config\log4net.config" />
|
||||
<userSettings>
|
||||
<chatserver.config.Settings1>
|
||||
<setting name="聊天信息保存上限" serializeAs="String">
|
||||
<value>100</value>
|
||||
</setting>
|
||||
</chatserver.config.Settings1>
|
||||
</userSettings>
|
||||
</configuration>
|
@ -13,11 +13,4 @@ namespace chatserver.Data
|
||||
File,//文件
|
||||
System//系统信息
|
||||
}
|
||||
public class User
|
||||
{
|
||||
public required string UserId { get; set; } = "UnId";
|
||||
public required string LoginIP { get; set; } = "Unnamed";
|
||||
public string? Avatar { get; set; }
|
||||
public required string token { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ using System.Data.SQLite;
|
||||
using chatserver.Data;
|
||||
using System.Text.Json;
|
||||
using System.Reflection;
|
||||
using static log4net.Appender.FileAppender;
|
||||
|
||||
[assembly: XmlConfigurator(ConfigFile = "config/log4net.config", Watch = true)]
|
||||
namespace chatserver
|
||||
@ -15,9 +14,8 @@ namespace chatserver
|
||||
internal class ChatServer
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(ChatServer));
|
||||
private static readonly object Client_lock = new object();
|
||||
private static List<Socket> Client = new();
|
||||
private static List<User> LoginUser = new();
|
||||
private static List<string> token = new();
|
||||
private static Socket? Server;
|
||||
private static SQLiteConnection? User_db;
|
||||
|
||||
@ -35,8 +33,8 @@ namespace chatserver
|
||||
try
|
||||
{
|
||||
Socket client = Server.Accept();
|
||||
lock (Client_lock) { Client.Add(client); }
|
||||
log.Info($"用户 {client.RemoteEndPoint} 连接");
|
||||
Client.Add(client);
|
||||
log.Info($"用户{client.RemoteEndPoint}连接");
|
||||
Thread thread = new Thread(() => HandleClient(client));
|
||||
thread.Start();
|
||||
}
|
||||
@ -59,7 +57,7 @@ namespace chatserver
|
||||
try
|
||||
{
|
||||
while (true)
|
||||
|
||||
|
||||
{
|
||||
byte[] buffer = new byte[1024];
|
||||
int received = socket.Receive(buffer);
|
||||
@ -124,43 +122,25 @@ namespace chatserver
|
||||
log.Warn("用户名或密码不能为空");
|
||||
var emptyResult = new LoginResultData { type = "login", status = "error_-1", message = "用户名或密码不能为空" };
|
||||
socket.Send(JsonSerializer.SerializeToUtf8Bytes(emptyResult));
|
||||
continue;
|
||||
continue; // 如果用户名或密码为空,则跳过登录流程
|
||||
}
|
||||
if (loginData.username.Length < 2 || loginData.username.Length > 20)
|
||||
{
|
||||
log.Warn($"用户登录时 {loginData.username} 用户名长度不符合要求");
|
||||
var lengthResult = new LoginResultData { type = "login", status = "error_2", message = "用户名长度必须在2到20个字符之间" };
|
||||
socket.Send(JsonSerializer.SerializeToUtf8Bytes(lengthResult));
|
||||
continue;
|
||||
}
|
||||
if (loginData.password.Length > 20)
|
||||
{
|
||||
log.Warn($"用户登录时 {loginData.username} 密码长度不符合要求");
|
||||
var weakPwdResult = new LoginResultData { type = "login", status = "error_1", message = "密码长度不能超过20个字符" };
|
||||
socket.Send(JsonSerializer.SerializeToUtf8Bytes(weakPwdResult));
|
||||
continue;
|
||||
continue; // 如果用户名长度不符合要求,则跳过登录流程
|
||||
}
|
||||
var Authentication = UserAuthentication(loginData.username, loginData.password);
|
||||
if (Authentication != "")
|
||||
{
|
||||
log.Info($"用户 {loginData.username} 登录成功 (id:{Authentication})");
|
||||
var timedUlid = Ulid.NewUlid(DateTimeOffset.UtcNow);
|
||||
lock (Client_lock)
|
||||
{
|
||||
LoginUser.Add(new User
|
||||
{
|
||||
UserId = Authentication,
|
||||
LoginIP = socket.RemoteEndPoint?.ToString() ?? "Unknown:0",
|
||||
Avatar = null,
|
||||
token = timedUlid.ToString()
|
||||
});
|
||||
}
|
||||
var result = new LoginResultData
|
||||
{
|
||||
type = "login",
|
||||
status = "succeed",
|
||||
message = "登录成功",
|
||||
token = timedUlid.ToString(),
|
||||
//token = Authentication,
|
||||
username = loginData.username,
|
||||
userid = Authentication
|
||||
};
|
||||
@ -180,39 +160,6 @@ namespace chatserver
|
||||
if (chatData != null && chatData.message != null)
|
||||
{
|
||||
log.Info($"接收到聊天消息: {chatData.message}");
|
||||
if (Client.Count == 0)
|
||||
{
|
||||
log.Warn("没有客户端连接,取消发送消息。");
|
||||
return;
|
||||
}
|
||||
// 获取发送者完整端点(IP: 端口)
|
||||
string senderEndpoint = socket.RemoteEndPoint?.ToString() ?? "Unknown:0";
|
||||
// ==== 修改:使用完整端点验证(非IP部分)====
|
||||
var loginUser = LoginUser.FirstOrDefault(u => u.LoginIP == senderEndpoint && u.UserId == chatData.userid);
|
||||
if (loginUser == null || loginUser.token != chatData.token)
|
||||
{
|
||||
log.Warn($"聊天消息验证失败:端点 {senderEndpoint} 未登录或 token 不匹配");
|
||||
var errorData = new ChatRegisterData
|
||||
{
|
||||
type = "chat",
|
||||
userid = chatData.userid ?? "Unid",
|
||||
status = "error_0",
|
||||
message = "未登录或token无效,无法发送消息",
|
||||
msgtype = MessageType.Text,
|
||||
timestamp = DateTime.Now
|
||||
};
|
||||
socket.Send(System.Text.Encoding.UTF8.GetBytes(JsonSerializer.Serialize(errorData)));
|
||||
continue;
|
||||
}
|
||||
|
||||
List<Socket> clientsCopy;
|
||||
List<User> usersCopy;
|
||||
// 1. 获取集合快照
|
||||
lock (Client_lock)
|
||||
{
|
||||
clientsCopy = new List<Socket>(Client); // 创建客户端列表副本
|
||||
usersCopy = new List<User>(LoginUser); // 创建用户列表副本
|
||||
}
|
||||
var chatRegisterData = new ChatRegisterData
|
||||
{
|
||||
type = "chat",
|
||||
@ -220,31 +167,12 @@ namespace chatserver
|
||||
user = GetUsernameByUserId(chatData.userid!),
|
||||
message = chatData.message,
|
||||
msgtype = chatData.msgtype ?? MessageType.Text,
|
||||
status = "succeed",
|
||||
// 替换为
|
||||
timestamp = DateTime.Now
|
||||
};
|
||||
foreach (var user in usersCopy)
|
||||
foreach (var client in Client)
|
||||
{
|
||||
// 查找匹配的客户端
|
||||
var targetClient = clientsCopy.FirstOrDefault(c =>
|
||||
c.RemoteEndPoint?.ToString() == user.LoginIP);
|
||||
|
||||
if (targetClient != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
// ==== 修改:添加发送异常处理 ====
|
||||
targetClient.Send(System.Text.Encoding.UTF8.GetBytes(JsonSerializer.Serialize(chatRegisterData)));
|
||||
}
|
||||
catch (SocketException ex)
|
||||
{
|
||||
log.Error($"发送消息到 {user.LoginIP} 失败: {ex.SocketErrorCode}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
log.Error($"发送消息异常: {ex.Message}");
|
||||
}
|
||||
}
|
||||
client.Send(System.Text.Encoding.UTF8.GetBytes(JsonSerializer.Serialize(chatRegisterData)));
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -273,15 +201,9 @@ namespace chatserver
|
||||
}
|
||||
finally
|
||||
{
|
||||
lock (Client_lock)
|
||||
{
|
||||
log.Info($"用户 {socket.RemoteEndPoint} 已断开连接");
|
||||
var disconnectedIp = socket.RemoteEndPoint?.ToString();
|
||||
if (!string.IsNullOrEmpty(disconnectedIp))
|
||||
{
|
||||
LoginUser.RemoveAll(u => u.LoginIP.StartsWith(disconnectedIp));
|
||||
}
|
||||
}
|
||||
log.Info($"用户{socket.RemoteEndPoint}已断开连接");
|
||||
socket.Close();
|
||||
Client.Remove(socket);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
|
@ -7,14 +7,6 @@
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>embedded</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<DebugType>embedded</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="config\log4net.config" />
|
||||
</ItemGroup>
|
||||
@ -31,19 +23,4 @@
|
||||
<PackageReference Include="Ulid" Version="1.3.4" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Update="config\Settings1.Designer.cs">
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings1.settings</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="config\Settings1.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings1.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
38
chatserver/config/Settings1.Designer.cs
generated
38
chatserver/config/Settings1.Designer.cs
generated
@ -1,38 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace chatserver.config {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.13.0.0")]
|
||||
internal sealed partial class Settings1 : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings1 defaultInstance = ((Settings1)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings1())));
|
||||
|
||||
public static Settings1 Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("100")]
|
||||
public int 聊天信息保存上限 {
|
||||
get {
|
||||
return ((int)(this["聊天信息保存上限"]));
|
||||
}
|
||||
set {
|
||||
this["聊天信息保存上限"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="chatserver.config" GeneratedClassName="Settings1">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="聊天信息保存上限" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">100</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
@ -22,7 +22,7 @@
|
||||
<!-- 日志文件编码 -->
|
||||
<encoding value="utf-8" />
|
||||
<!-- 日志文件目录 -->
|
||||
<file value="log\" />
|
||||
<file value="log\\" />
|
||||
<!-- 是否追加到文件 -->
|
||||
<appendToFile value="true" />
|
||||
<!-- 按日期滚动日志文件 -->
|
||||
|
Loading…
x
Reference in New Issue
Block a user