AspNet开发问题二
1.“Com.ProHeng.Admin.Users”不扩展类“System.Web.UI.Page”,因此此处不允许
2.反编译Dll
一个历史遗留问题,不知道几年前的程序员,写了一个ASP.net项目,现在人都不知道哪里去了,让我接手开发。给我的代码,我修改了 .ashx 对应的 .ashx.cs文件,甚至删除了这个文件,项目还是依然能够运行。我怀疑是因为cs文件被编译成了.dll文件,而运行使用的是bin下面的dll文件,而不是我修改的ashx文件,这可怎么办呢?给我的代码也不是最新的了。
而且我重新编译这个代码的时候,发现了无法重新构建,因为使用到了dll中的文件错误。
【解决方法】
(1) 下载 reflector
我下载的是 10.3版本,这个版本已经有导出文件的功能了,不需要另外的安装插件什么的,比如:Reflector.FileDisassembler、FileGenerator 这两个插件只能支持早期版本的Reflector,新的装不上了。
(2) 打开要查看的dll文件
安装之后,打开菜单工具栏上的文件夹按钮,选择要查看的dll文件,将其加载进来。
(3) 导出代码
选择要导出代码的dll,然后点击菜单工具栏上的保存按钮,就可以将代码保存成文件。默认的目录是:%UserProfile%\Documents\Reflector\Disassembler\ 目录下,可以换一个目录。这样就可以愉快的重新编译项目,重新部署了。
1.发布以后的dll文件可以还原成cs文件吗 反编译,不过 用refle后,你可以看到代码但是你可以复制出来,然后新建项目
2.Asp.Net中的ashx文件为什么没有编绎(坑爹呀!愿出60分)
3.Reflector使用详解
4.asp.net网站修改aspx.cs文件后如何不替换网站就生效 在修改了web层一些.cs页面的时候,可以用本地调试编译好的dll文件NSP.Web.dll替换服务器上的。就不用再服务器上重新发布了
问题
当然反编译的代码,也不是百分百能直接用的,还是需要进行修改的。
(1) 当前上下文中不存在名称“methodof”
反编译生成的methodof代码,在现有的C#语言中是不支持的。
1..NET(C#):methodof、fieldof和ldtoken 今天在Reflector中看到了methodof關鍵字,很顯然,目前的C#沒有這個關鍵字,
3.功能“内插字符串”在 C# 5 中不可用。请使用6或更高的语言版本。
我是用的是VS2019编辑器,在编译老的项目的时候,总是出现这个问题,我修改了解决方案的.Net版本为4.6,也不行。
【解决方法】
编辑项目的csproj文件,在PropertyGroup节点下添加 LangVersion 语言版本。
1 | <PropertyGroup> |
1.功能“内插字符串”在 C# 5 中不可用。请使用6或更高的语言版本。
2.如何在Visual studio中修改所使用C#语言的版本
3.功能“内插字符串”在 C# 5 中不可用。请使用6或更高的语言版本。 不管用
4.如何在VS 2019中修改C#语言版本 这个具有参考价值,虽然在vs2019中已经不能使用界面进行语言的更改了,但是可以编辑配置文件。
4.无法识别命名空间
明明在文件夹下有相关的文件,但是打开vscode却找不到,编译的时候,也是出现为引用相关的明明空间,但是使用using指令,又找不到相关的空间。
【解决方法】
编辑项目的 csproj 文件,修改 ItemGroup 节点下面的内容,将cs的路径写入
1 | <ItemGroup> |
5.修改Debug端口
右键网站目录,然后选择属性页,选择 web,修改网址和端口,默认的是5251。
修改之后,可能需要创建虚拟目录,直接点击创建虚拟目录就可以了,至于创建到哪里了,没有深究。
6.命名空间“System.Web”中不存在类型或命名空间名“Http”
我把原先的.NET 4.0的框架,改到了.NET 4.5上,就好了。
7.未能在当前目标框架中解析主引用“System.Net.Http.WebRequest”,它是一个框架程序集。“.NETFramework,Version=v4.0”。若要解决此问题,请移除引用“System.Net.Http.WebRequest”,或将应用程序的目标重新指向包含“System.Net.Http.WebRequest”的框架版本。
8.用户身份认证
1.asp.net登录验证FormsAuthenticationTicket和FormsAuthentication类 从配置文件配置到用户认证都有
2.使用 C#.NET 在 ASP.NET 应用程序中实现基于表单的身份验证
9.发起http请求
(1) 异步请求
1 | public static async Task<string> HttpPostAsync(string url, string body = null, string contentType = null, Dictionary<string, string> headers = null, int timeOut = 30) |
(2) 同步请求
1 | HttpResponseMessage response = client.PostAsync(url, httpContent).Result; |
(3) 解析json
1 | String url = "http://xxx/getUserInfoByToken?tk=" + tk; |