AspNet开发问题
从别人那里继承了一个Asp.net的工程,没有文档,没有说明,只有源代码,于是只能是拿起来慢慢的摸索,于是我重新安装了Visual Studio 2019,打开了源代码。因为源代码就是一个工程,于是我就双击.sln,希望打开解决放案,于是问题就接连出现了。
1.你不具备访问 IIS 配置文件的权限。要在 IIS 上打开和创建网站,需要使用 Administrator 帐户运行 Visual Studio。
这个问题是刚打开解决方案的时候出现的
根据参考文章中的思路,解决了相关的问题,于是就没有截图了。解决方法就是:
(1) 打开C:\Windows\System32\inetsrv\config目录,弹出询问窗口时选择“继续”。
(2) 再接着打开\Export目录,也选择“继续”。
(3) 然后重新打开web项目,就可以了。
问题真是奇奇怪怪。
2. Web 应用程序项目 已配置为使用 IIS。未能找到 Web 服务器
解决完上面的权限问题之后,就出现了这样的问题:Web 应用程序项目 ProHengWeb 已配置为使用 IIS。 未能找到 Web 服务器“http://localhost:9104
”
我右键项目解决方法,通过打开项目配置文件,或者是找到你的项目的工程文件,后缀名为csproj文件,然后搜索找到
如果想再次配置为IIS,右键项目名称,然后选择属性,打开web配置,填入项目URL等内容,保存,就可以了。测试相关的IIS端口,也是如此设置。
1.Web应用程序项目XXX已配置为使用IIS (根据这个文章,虽然可以打开项目了,但是我还是不知道原因)
2.使用 Visual Studio 的 ASP.NET Web 部署:部署到测试 (本来想查一下,VS中的代码如何部署到IIS上,没有说明使用IIS)
3.未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
(1) 删除bin下面的Newtonsoft.Json.dll
(2) 删除packages.config中关于Newtonsoft.Json的定义
(3) 删除Web.config中的runtime下的Newtonsoft.Json定义
(4) 打开NuGet包管理器
(5) 搜索并重新安装Newtonsoft.Json.dll
1.未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040) (这两篇文章其实都差不多的,都可以)
2.无法加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项 (第三步的时候,其实我使用的是界面的方式进行安装了,也是一样的。)
4.由于找不到编译器必需的类型“System.Runtime.CompilerServices.TupleElementNamesAttribute”,因此无法使用元组来定义类或成员。是否缺少引用?
这是因为没有ValueTuple,这个引用,所以只需要使用NuGet进行安装就好了。
1.缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor” 解决方案 (这个没用)
2..net - 无法从使用Visual Studio 2017和C#7.0的方法返回Tuple (这个很有用,基本上就是要引入心的类)
5.扩展方法必须在非泛型静态类中定义
解决方法就是增加static关键字。
1 | // 错误 |
1.扩展方法必须在非泛型静态类中定义 (由于时间紧迫,我也就没有具体的去研究了)
6.不安全代码只会在使用 /unsafe 编译的情况下出现
其实就是要选择项目右键,然后选择属性->生成,然后就是要选择全部配置
7.IIS中安装.net4.5
有时候,在VS Studio中开发的程序,需要用到很多的库,而这些库又使用到了比如最新版本的.net框架,比如4.5或者是4.6,在IIS中如何升级或者安装更高版本的.net运行时呢?
刚开始我根据参考文章,执行了下面的命令,虽然没有报错,但是还是没有相应版本的应用程序池。
1 | dism /online /enable-feature /featurename:IIS-ISAPIFilter |
1.Windows 10 IIS 安装 .Net4.5 (这个好像不管用,即便按相关的内容升级和安装了.net,但是IIS中还是没有相应的应用程序池)
2.Win10 IIS 安装.net 4.5的方法
3.如何设置.net Framework 4.5版本 IIS 7应用程序池
8.本地调试没有问题,但是部署到IIS中应用程序总是出现未响应问题
在vs studio中开发Asp.net应用,调试的时候总是没有问题,但是部署到IIS中,登录页面还是可以使用的,但是登录之后,总是出现未响应的错误,后续页面登录不上,登录页也没有了。
(1) 刚开始我以为是.net版本的问题,于是升级了项目的.net版本,从4.0升级到4.5,然后再降下来,降到2.0,同时升级IIS的.net版本,还是无效。
(2) 因为应用程序不是一开始就无响应,登录页面是可以进入的,于是我通过日志打印的方式,进行一步一步的发布后调试,最后定位到了,登录页面的Page_Load方法。在该方法中,当应用程序进入到this.IsPostBack条件之后,无论代码块中有无内容,应用程序都没有返回值。
1 | protected void Page_Load(object sender, EventArgs e) |
(3) 根据参考文件5提供的思路,我就把页面中全部能看见的 runat=”server” 的标签,一个一个的注释掉,注释一个部署以下,测试一下。最后也还是出现了一些效果的,就是在点击登录后,不会出现页面无响应问题了,原样返回了开始的页面。这是一个突破口,于是我一点点的把注释掉的内容打开。
页面中原来有两个控件,是这样的。
1 |
|
在原有的代码中,只有在页面初次加载的时候,才会初始化这两个控件,但是在this.IsPostBack没有进行赋值。
1 | // 原代码 |
修改后,改为无论是不是this.IsPostBack,都进行初始化,这样暂时没有了无响应的问题。
1 | // 现代码 |
(4) 经过最后的测试和修改,页面出现未响应的问题,是没有在this.IsPostBack条件中,对具有runat=”server”标志,运行在服务端的控件进行初始化造成的。这个问题非常的隐蔽,日志文件中也没有相应的内容,IIS也不会给出相应的提示,所以定位起来就比较麻烦和耗费时间。
1.Page_Load()无事件响应的解决 (这里我以为是IIS不支持application/x-www-form-urlencoded,可是没有找到IIS设置支持这个Content-Type的地方)
2.分享asp.net 网站部署一段时候后无法响应经验 (这篇文章是说IIS版本的问题)
3.解决IIS无响应假死状态,asp突然无法访问重启后可以使用是什么原因 (这篇文章没有用)
4.在 Page_Load里写Response.Write无反应? (这篇文章也没有用)
5.Page_Load执行两次的解决方法 (这篇文章虽然没有用,但是提供了一个思路,就是:所以在出现页面非正常的多次载入时,可以检查一下自己的HTML源代码,看看时不是有哪个标签的属性被赋了非法值了。我就寻着这个思路进行了相关代码修改。)
6.Win10下配置IIS并调试ASP程序 (暂时还没有用到这个方法)