关于C# webservices 返回的soap节点标签会包含方法名+result的修改 有时候做项目的时候需要用到webservices与其他系统进行交互,但是当使用asp.net开发webservice的时候,webservices返回数据的xml节点标签会默认带 方法名+result 如下图: 这样的返回方式不利于客户端进行解析 我们可以在方法头添加属性: 这样返回的数据就会变化 from:https://blog.csdn.net/qq_40099189/article/details/107120068
View Details我们在使用C#开发WebApi等相关程序时,可能因为某些原因会出现如下图所示的错误,原因就是我们在编译的时候,使用的dll库可能和最初的发生了改变,导致版本不一致造成的。
View DetailsMySQL连接字符串里加上了“Allow Zero Datetime=True”,导致错误:
1 |
System.Data.DataException: Error parsing column 15 (ADDDATE= - Object) ---> System.InvalidCastException: 指定的转换无效。 |
纠基原因,这句配置允许零日期后,MySQL与.Net的日期类型是不一样的,导致转换失败。去掉就正常了,默认值是False。
1 |
MySql.Data.Types.MySqlDateTime -> System.DateTime |
View Details
大并发大数据量请求一般会分为几种情况:
大量的用户同时对系统的不同功能页面进行查找、更新操作
大量的用户同时对系统的同一个页面,同一个表的大数据量进行查询操作
大量的用户同时对系统的同一个页面,同一个表进行更新操作
在ASP.NET Core 3.0中路由配置和2.0不一样了 一、MVC 服务注册 ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureServices。 三个新的顶级扩展方法与 MVC 方案上IServiceCollection可用。 模板使用这些新方法,而不是UseMvc。 但是,AddMvc继续像它已在以前的版本。 下面的示例将添加对控制器和与 API 相关的功能,但不是视图或页面的支持。 API 模板使用此代码:
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); } |
下面的示例将添加对控制器、 与 API 相关的功能,和视图,但不是页面的支持。 Web 应用程序 (MVC) 模板使用此代码:
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); } |
下面的示例添加支持 Razor 页面和最小控制器支持。 Web 应用程序模板使用此代码:
1 2 3 4 |
public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); } |
此外可以组合的新方法。 下面的示例是等效于调用AddMvcASP.NET Core 2.2 中:
1 2 3 4 5 |
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddRazorPages(); } |
二、Startup.Configure配置 一般不建议: 添加UseRouting。 如果该应用程序调用UseStaticFiles,将置于UseStaticFiles之前 UseRouting。 如果应用使用身份验证/授权功能,如AuthorizePage或[Authorize],将对UseAuthentication并UseAuthorization后 UseRouting。 如果应用使用CORS功能,如[EnableCors],将放置UseCors下一步。 替换UseMvc或UseSignalR与UseEndpoints。 以下是一种Startup.Configure典型的 ASP.NET Core 2.2 应用中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public void Configure(IApplicationBuilder app) { ... app.UseStaticFiles(); app.UseAuthentication(); app.UseSignalR(hubs => { hubs.MapHub<ChatHub>("/chat"); }); app.UseMvc(routes => { routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); }); } |
现在的控制器映射内发生UseEndpoints。 添加MapControllers如果应用使用属性路由。 由于路由包括对许多框架在 ASP.NET Core 3.0 或更高版本的支持,添加属性路由的控制器是参加。 将为以下内容: MapRoute 使用 MapControllerRoute MapAreaRoute 使用 MapAreaControllerRoute 由于路由现在包括对不止是 MVC 的支持,已更改了术语进行明确说明他们所做的这些方法。 如传统路由MapControllerRoute / MapAreaControllerRoute / MapDefaultControllerRoute它们要添加的顺序应用。 将第一位更具体的路由 (如某一区域的路由)。 如下示例中: […]
View Detailslog4net .NET Core 版使用,log4net 2.0.7版发布也有一段时间了,从2.0.6 版开始就已经支持.NET Core。 之前有介绍NLog .NET Core版的使用,ASP.NET Core 开发-Logging 使用NLog 写日志文件。 ASP.NET Core已经内置了日志支持,可以轻松输出到控制台。使用log4net 将日志写入到文件及输出控制台。 .NET Core项目使用 新建一个 .NET Core 项目,选择控制台应用程序。 添加引用: Install-Package log4net 使用简单配置,将日志输出至控制台,跟之前.NET 版本略微有些区别,需要指定Repository 。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public static void Main(string[] args) { ILoggerRepository repository = LogManager.CreateRepository("NETCoreRepository"); // 默认简单配置,输出至控制台 BasicConfigurator.Configure(repository); ILog log = LogManager.GetLogger(repository.Name,"NETCorelog4net"); log.Info("NETCorelog4net log"); log.Info("test log"); log.Error("error"); log.Info("linezero"); Console.ReadKey(); } |
运行程序显示如下: 下面增加配置,让其输出至文件。 在项目中添加一个配置文件,这里添加一个log4net.config ,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- This section contains the log4net configuration settings --> <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" /> </appender> <appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="log-file.log" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logfile/" /> <appendToFile value="true" /> <rollingStyle value="Composite" /> <staticLogFileName value="false" /> <datePattern value="yyyyMMdd'.log'" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="1MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <!-- Setup the root category, add the appenders and set the default level --> <root> <level value="ALL" /> <appender-ref ref="ConsoleAppender" /> <appender-ref ref="FileAppender" /> <appender-ref ref="RollingLogFileAppender" /> </root> </log4net> </configuration> |
这里定义了三个 Appender,都会起作用,然后日志级别ALL 所有的日志都会记录。 更改Program.cs 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
public static void Main(string[] args) { ILoggerRepository repository = LogManager.CreateRepository("NETCoreRepository"); <strong>XmlConfigurator.Configure(repository, new FileInfo("log4net.config"</strong><strong>));</strong> ILog log = LogManager.GetLogger(repository.Name,"NETCorelog4net"); log.Info("NETCorelog4net log"); log.Info("test log"); log.Error("error"); log.Info("linezero"); Console.ReadKey(); } |
加了指定配置文件。运行程序会生成一个文件夹和一个文件,因为重新定义了ConsoleAppender,控制台输出也有所不同。 ASP.NET Core项目使用 在ASP.NET Core 使用也是一样,可以在Program.cs或Startup.cs 中指定Repository,然后控制器或中间件中获取对象使用。 以下代码是在Startup 构造函数中初始化log4net
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Startup { public static ILoggerRepository repository { get; set; } public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); repository = LogManager.CreateRepository("NETCoreRepository"); XmlConfigurator.Configure(repository, new FileInfo("log4net.config")); } |
然后在Configure 中加了一个记录日志
1 2 3 4 |
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { var log = LogManager.GetLogger(repository.Name,typeof(Startup)); log.Info("test"); |
在HomeController 也增加了:
1 2 3 4 5 6 7 |
private ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(HomeController)); public IActionResult Index() { log.Info("index view"); log.Error("Controller Error"); return View(); } |
运行应用结果如下,然后对应的文件会有日志记录。 对于输出中文乱码,需要增加编码引用,以及代码。NLog 那篇文章有介绍。写到日志文件是没有问题的。 参考文档: http://logging.apache.org/log4net/release/manual/configuration.html http://logging.apache.org/log4net/release/config-examples.html 如果你觉得本文对你有帮助,请点击“推荐”,谢谢。 ASP.NET Core 3.1 新书发布 《ASP.NET Core项目开发实战入门》 京东当当淘宝 GitHub:https://github.com/linezero 博客示例代码GitHub:https://github.com/linezero/Blog from:https://www.cnblogs.com/linezero/p/log4net.html
View Details“System.IO.FileNotFoundException:“Could not load file or assembly 'ClassLibrary2, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。”” 在 .net 程序开发中我们会经常用到反射,最近在开始慢慢接触 .netCore。Core 反射的语法也是一样的,所以写下来也没有什么问题,但是一运行,就弹出了开头的 异常。 项目结构如下 ClassLibrary3 是一个接口
1 2 3 4 5 6 7 |
namespace ClassLibrary3 { public interface IClass1 { void Print(); } } |
ClassLibrary2 是 ClassLibrary3 的实现
1 2 3 4 5 6 7 8 9 10 |
namespace ClassLibrary2 { public class Class1:IClass1 { public void Print() { Console.WriteLine("Print....."); } } } |
主程序通过反射获取到到类型并创建对象
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); Assembly assembly = Assembly.Load(new AssemblyName("ClassLibrary2")); Type type = assembly.GetType("ClassLibrary2.Class1"); var instance = (IClass1)Activator.CreateInstance(type); instance.Print(); Console.ReadLine(); } } |
这代码都这里没有问题,但是执行的时候却抛出了 开篇的异常。仔细检查了下,ClassLibrary2 生成的 dll 确认已经是复制到了主程序目录下。 刚开始接触Core 也没有系统去熟悉,最后经过多方努力后,发现在主程序项目下有个 deps.json 的文件 文件内容是这样的(里面没有 ClassLibrary2 因为我们没有在项目中引用 ClassLibrary2) 然后想着 那异常提示找不到路径,那我们在这里配置下不久可以了? 然后改成如下: 这时候我们运行程序: 完美! from:https://www.cnblogs.com/mengtree/p/7139108.html
View Details
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/// <summary> /// 替换SQL注入的危险字符 /// </summary> /// <param name="param"></param> /// <returns></returns> public static string ReplaceInjectString(string param) { if (string.IsNullOrEmpty(param)) return string.Empty; var result = new StringBuilder(param); return result .Replace("'", "'") .Replace(",", ",") .Replace(";", ";") .Replace("(", "(") .Replace("=", "=") .Replace("*", "*") .Replace("&", "&") .ToString(); } |
View Details
NuGet默认的全局包下载地址一般为:C:\Users\{username}\.nuget\packages 修改方法:
1 2 3 4 5 6 7 8 9 |
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"/> </packageSources> <config> <add key="globalPackagesFolder" value="D:\Nuget\.nuget\packages" /> </config> </configuration> |
from:https://www.cnblogs.com/sword88/p/11490304.html
View Details