vs2005.net web应用程发布问题及解决方法-程序员宅基地

技术标签: web  dll  asp.net  assembly  .net  webservice  Delphi  

最近用vs2005asp.net程序,发布时遇到很多麻烦,觉得和vs2003有很多的不同,以前还一直抱怨Boland Delphi 2005难用,满口称赞vs2005呢,现在觉得vs2005也有很多不尽人意的地方。

早知道当初还选择dotnet1.1了,现在用vs2005+dotnet2.0,发布时真是多花了好多力气,

且听一一道来。

       首先,一开始我还以为vs2005vs2003一样,可是无论我怎样点击生成网站却始终找不到生成的dll,后来才知道,要用发布网站才可以的。可是对于一个web应用程序进行发布时,vs2005却生成了多个由随机字符命名dll文件,看上去就很难受,而其管理维护起来十分不方便,更让人不能接受的是在发布webservice 的时候,对于每一个webservice网站应用程序vs2005生成一个名为App_Code.dll 的文件,找不到可以修改生成文件名的地方。

无奈之中,只好上网找资料。后来了解到WebDeployment  点击这里进入WebDeployment下载页面)这个小插件可以解决上述问题,于是就下载来看看。是e文的,用起来不是很方便,但确实可以解决问题。

有关WebDeployment的参考请查阅一下网址

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/web_deployment_projects.asp

http://msdn.microsoft.com/asp.net/reference/infrastructure/wdp/default.aspx

       可我在使用过程中又发现许多新的问题,WebDeployment用起来十分不稳定,会莫名其妙的出现错误,同样的代码有时能通过编译有时不能,错误提示十分含糊笼统,总是提示:

错误       1     aspnet_merge.exe”已退出,代码为 1

而且这些代码在不使用WebDeployment  的时候都很正常,都能编译通过。

相信许多朋友都遇到过这种问题,实在让人迷茫阿,于是笔者自己手用命令行动执行aspnet_merge.exe      dll进行管理合并。

得到以下信息

Utility to merge precompiled ASP.NET assemblies.

Copyright (c) Microsoft Corporation. All rights reserved.

 

An error occurred when merging assemblies: 索引超出了数组界限。

如图:

怎么会有数组越界错误,让人迷茫,于是又上网查资料,有人遇到同样的问题,可是没人知道是什么问题。

笔者这时又查到另外一个卡一对.net assembly 进行管理的工具 ILMerge.exe 下载地址

有关ILMerge.exe 的参考请浏览以下网址

http://research.microsoft.com/%7Embarnett/ilmerge.aspx

它目前支持.net1.12.0,可以把多个.net assembly合并成一个,笔者在想可不可以用它对

Vs2005生成的dll进行合并,于是下载了ILMerge.exe试试看,他只支持命令行方式,有点麻烦,我还是按帮助试试看了,结果是让人失望的,

在我对aspnet_merge.exe 无法合并的dll进行合并时,出现同样的错误

An error occurred when merging assemblies: 索引超出了数组界限。

 

极度迷茫…….,该怎么办呢?

问题没有解决,不能放弃。

于是笔者把自己写的程序代码全都注释掉,一点一点放开,慢慢寻找问题所在。

终于,让我找到了我的程序的“bug”(其实不能称作为我的bug,因为他在vs2005.net2.0中都能正确执行只是进行合并时有问题

我写了一个webservice,可以通过编译同过WebDeployment生成也没为题

指定服务说明

[WebMethod(Description ="")]

仍然没有问题

改为:

[WebMethod(Description ="sdfdfsdfsdfsdfsdfsfsf")] Description = 英文字符串

仍然没有问题

改为:

[WebMethod(Description ="包括汉子的字符串..SSSsds ")],即Description =包括汉子的字符串

问题出现了

Description包含汉子时候,对于WebDeployment而言根据字符的长度不同和字符中英文字母的个数不同,有时候会出错,有时候不会出错。

      

       看来是WebDeploymentILMerge本身有一定的bug,笔者猜想可能是编码问题造成的,WebDeploymentILMerge都是英文版的,也许是在计算字符串长度时由于汉子和英文字母不同,而造成的错误吧,这只是我的猜想,大家仅作参考。

经过反复试验,笔者找到了一种不是办法的办法,就是在字符串后边狂加 空格

由于笔者的WebMethod Description web上输出,因此最后多些空格不太影响效果。

暂且这样解决巴。无奈啊。

 

 

希望我的一点经验能给大家带来帮助,导致WebDeployment出错的原因也许还有很多,不过在你遇到错误时,可以先检查一下你程序中的字符串,暂时把他们置为””,试试看。没准就是他引起的问题啊。

 

Vs2005确实还有很多不尽人意的地方阿。。。

 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sxf_zero/article/details/1323356

智能推荐

ORA-12560错误解决_ora12560 乱码-程序员宅基地

错误信息:windows下 sqlplus / as sysdba 报ora-12560错误解决步骤:1、确认windows注册表中的ORACLE_HOME 键及其 键值 是正确的,是有效的,用运行regedit,打开注册表2、确定注册值:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1下,找到ORACLE_HOME_ora12560 乱码

轮胎十大排名韩泰轮胎:轮胎受伤,可能是平日里没照顾好!_耻井军类碑十大轮胎排名要搜韩泰轮胎_小小爱上飞鱼的博客-程序员宅基地

年关将至,高速上的车辆变得多起来,在车流增多的情况下,司机朋友们务必要记住小心驾驶。当然,在驾驶时也注意千万不要超速或者超载,因为一旦出现这种情况,车辆爆胎几率也会增加。很多爆胎的车主都抱有侥幸心理,但其实轮胎比我们想象中的要脆弱得多。除了超载和超速以外,很多司机朋友不解,为什么车辆的轮胎在正常行驶时也会出现爆胎?其实遇到这种情况时,说明你的轮胎已经受了“内伤”,而这也是平日里司机朋友忽略对轮胎的关照,因此我们的日常驾驶也要养成定期检查轮胎的习惯。那么如何通过自检找到轮胎问题所在?今天轮胎十大排名韩泰轮_耻井军类碑十大轮胎排名要搜韩泰轮胎

直接读取raw文件下的视频文件并播放-程序员宅基地

直接读取raw文件下的视频文件并播放

EL表达式与JSTL标签库_el表达式和jstl-程序员宅基地

EL表达式EL(Expression Language):表达式语言,提供了在JSP中简化表达式的方法,是一种简单语言。不需要加任何jar包 ,不依赖任何其它库。提供了在脚本元素范围外使用运行表达式的功能。基本语法: ${ expression }示例:${user.name}等价于User user=(User)session.getAttribu_el表达式和jstl

3、spring集成quartz-程序员宅基地

spring集成quartz有两种方式:1. JobDetailBean.2. MethodInvokeJobDetailFactoryBean.注意:spring集成quartz,除了基本的jar包之外,还需要引入spring-support架包缓存Cache(EHCache),任务计划Scheduling(uartz)方面的类。 外部依赖spr

doubles_余数运算符在Java中用于Doubles-程序员宅基地

doubles 我在OSU任教已近两年了,这总是令我惊讶,我从学生那里学到了多少东西。 例如,过去,我让学生写一些我不理解的奇怪代码。 在这一点上,即使经过300多个博客文章, 几个YouTube视频,甚至收集了100多种语言的代码片段,您都认为我已经看完了。 好吧,最近,我看到一个学生在双打中使用余数运算符( % ),从那以后我就再也没有真正的相同了。余数与模运算符在开始讲故事之前,我想先...

随便推点

twilio python自动拨打电话,播放自定义mp3音频_twilio python自动拨打电话,播放自定义mp3-程序员宅基地

有个小项目,需求是某事件发生时,给客户打电话,提醒客户。需要事先录制好一段音频,客户接通电话后,自动播放。这里用到了twilio:https://www.twilio.com ,分享下。1. 注册twilio账号2. 买一个电话号码3. 安装twiliopip install twilio4. trigger代码(给某个电话发送短信,或者打电话):from twi..._twilio python自动拨打电话,播放自定义mp3

php实现上传图片并进行压缩,之后覆盖原图片_php 覆盖图片-程序员宅基地

取于互联网,还于互联网。之前在做个php上传图片的功能,并实现压缩,网上找了很多参考方案,最后集各家所成,编写成一个封装类,方便调用,现在跟大家分享下。class test{ /*图片上传函数*/ public function uploadImg($destination_folder,$input_file_name,$maxwidth,$maxheight) {_php 覆盖图片

Qt on Mac 开发之 Qt在Retina屏幕上的那些问题_devicepixelratio()总为1qt-程序员宅基地

目录1、解决Qt在Retina屏幕上的图片模糊问题2、解决Qt在Retina屏幕上的密度问题1. iOS2. Android3. 视网膜MacBook3、解决Qt在Retina屏幕上的刷新问题1、解决Qt在Retina屏幕上的图片模糊问题说到这个问题,我们要用到QT_REQUIRE_VERSION这个宏,Qt文档中这么描述:这里是要设置的与当前使用的Qt版本相匹配。比如:用的是Qt5...._devicepixelratio()总为1qt

vue-cli 3.x中eslint如何和谐地解决报错问题-程序员宅基地

使用vue-cli 3.x构建项目很方便,但是里面的ESlint代码规范提示很烦人,动不动就报错,而且VSCode中第三方格式化插件格式化出来的代码也报错,但是vue-cli是多个人写的啊,不可能把它给关掉。(如果是个人写的项目,可在创建项目时不选中ESlint)。ESlint主要报错就是空格、引号这些规范。可以在项目根目录中创建一个.prettierrc的文件,里面写两段代码:去除不必要的分号及引用文件时使用单引号。...

Struts2学习笔记4-程序员宅基地

Struts2将Result列为一个独立的层次,可以说是整个Struts2的Action层架构设计中的另外一个精华所在。Result之所以成为一个层次,其实是为了解决MVC框架中,如何从Control层转向View层这样一个问题而存在的。所以,接下来我们详细讨论一下Result的方方面面。 Result的职责 Result作为一个独立的层次存在,必然有其存在的价值,它也必须完成它所在的层次的职责。...

[学习]用python的BeautifulSoup分析html_beautifulsoup findnextsibling-程序员宅基地

序言  之前用python爬取网页的时候,一直用的是regex或者自带的库sgmllib里的SGMLParser。但是遇到复杂一点的情况时,SGMLParser往往就不那么给力了!(哈,难道说我 t_beautifulsoup findnextsibling