在部署webservices时老是会遇到 http 404, 500 错误, 有很多次遇到的问题都是以前出现并解决过的, 只是自己忘记了,

又要重新google资料, 浪费了很多时间, 所以写这篇BLOG作为参考, 如有遗漏, 欢迎补充

 

问题列表:

 

404 错误

解决办法:

  •  打开IIS中的 web服务扩展,如果是禁止的, 请疯狂点击 “允许”按钮, 以表达心中的郁闷

  • 打开站点的属性,确保 Aspnet 的版本是2.0的

  • 在对应的 framework 安装目录下运行 aspnet_regiis /i  (默认的路径是 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)

  • 服务是否都已经打开, 需要的服务有 "ASP.NET 状态服务“, "IIS Admin Services", ”Remote Procedure Call“

 

500 错误

解决办法

500错误遇到的比较少, 如果使用了 404 错误中的所有方法也不能解决问题, 需要再看一下 ”Distributed Transaction Coordinator“

这个服务是否打开, 一般都是由于这个问题引起的。

 

posted @ 2008-08-29 11:06 在天空飞翔 阅读(92) | 评论 (0)编辑

也许不该抱怨,但还是想问一句

 

是不是每一个男人都有这么多不顺心的事,难道这就是传说中的“责任”吗?

posted @ 2008-08-03 22:36 在天空飞翔 阅读(112) | 评论 (0)编辑

今天忽然想起很久以前简单的模仿了一个, 呵呵(第一次 看到 Flashget 的多任务进度条工具时, 很是欣赏)

先放一个效果图

从图上可以看到有两个任务在运行, 各图示的解释:

灰色:还没开始执行的 cell

红色:正在执行的 cell

绿色:执行成功的 cell

黄色:执行出错的 cell

 

 控件使用很简单, 大家看看注释应该就明白了

        /// <summary>
        
/// 普通项目的颜色
        
/// </summary>
        [Description("普通项目的颜色"), DefaultValue(typeof(Color), "Gray")]
        
public Color NormalColor
        
        
/// <summary>
        
/// 进行中的项目颜色
        
/// </summary>
        [Description("进行中的项目颜色"), DefaultValue(typeof(Color), "Red")]
        
public Color ProcessingColor

        
/// <summary>
        
/// 成功项目的颜色
        
/// </summary>
        [Description("已成功完成项目的颜色"), DefaultValue(typeof(Color), "Green")]
        
public Color CompleteColor

        
/// <summary>
        
/// 错误项目的颜色
        
/// </summary>
        [Description("错误项目的颜色"), DefaultValue(typeof(Color), "Yellow")]
        
public Color ErrorColor

        
/// <summary>
        
/// 每一个任务包含的块数
        
/// </summary>
        [Browsable(false)]
        
public List<int> Tasks

        
// 方法就一个
        
/// <summary>
        
/// 设置 Cell 的状态
        
/// </summary>
        
/// <param name="task">任务索引</param>
        
/// <param name="block">任务的块索引</param>
        
/// <param name="state">状态</param>
        public void SetBlockState(int task, int block, TaskState state)

 

再贴一段测试代码(执行后就是上图中中的效果):

 



        
private void button1_Click(object sender, EventArgs e)
        {
            
//开启两个线程, 模仿两个任务
            new Thread(ThreadRun1).Start();
            
new Thread(ThreadRun2).Start();
        }

        
//第一个任务
        int thread1Index;

        
/// <summary>
        
/// 任务开始
        
/// </summary>
        void Thread1Start()
        {
            MultiProgress.SetBlockState(
0, thread1Index, HW.Windows.Forms.TaskState.PROCESSING);
        }
        
/// <summary>
        
/// 任务完成
        
/// </summary>
        void Thread1Complete()
        {
            
if (thread1Index % 4 == 0)
                MultiProgress.SetBlockState(
0, thread1Index++, HW.Windows.Forms.TaskState.ERROR);
            
else
                MultiProgress.SetBlockState(
0, thread1Index++, HW.Windows.Forms.TaskState.COMPLETE);
        }
        
void ThreadRun1()
        {
            
for (int i = 0; i < MultiProgress.Tasks[0]; i++)
            {
                Invoke(
new MethodInvoker(Thread1Start));
                
//处理耗时的操作
                
//
                Thread.Sleep(300);
                
//设置状态
                Invoke(new MethodInvoker(Thread1Complete));
            }
        }

        
//第二个任务, 代码和第一个一样。。。
        int thread2Index;
        
void Thread2Start()
        {
            MultiProgress.SetBlockState(
1, thread2Index, HW.Windows.Forms.TaskState.PROCESSING);
        }

        
void Thread2Complete()
        {
            
if (thread2Index % 4 == 0)
                MultiProgress.SetBlockState(
1, thread2Index++, HW.Windows.Forms.TaskState.ERROR);
            
else
                MultiProgress.SetBlockState(
1, thread2Index++, HW.Windows.Forms.TaskState.COMPLETE);
        }

        
void ThreadRun2()
        {
            
for (int i = 0; i < MultiProgress.Tasks[1]; i++)
            {
                Invoke(
new MethodInvoker(Thread2Start));
                
//处理耗时的操作
                
//
                Thread.Sleep(200);
                
//设置状态
                Invoke(new MethodInvoker(Thread2Complete));
            }
        }

        
/// <summary>
        
/// 设置两个任务, 第一个有30个块, 第二个有50个块
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            MultiProgress.Tasks 
= new List<int>(new int[] { 3050 });

        }


 控件下载

posted @ 2008-07-31 15:01 在天空飞翔 阅读(113) | 评论 (0)编辑

一个比较搞笑的贴, 摘几个比较BH的回复

 

1. 里边有个小机器人在不停的品尝

    评:难怪每次饭都不够吃, 下次多煮点

2. 传说是某某挨踢工程师的杰作 写了套C#的程序! 我有源码!

    评:开个源看看。。

3. 饭告诉锅的.我熟了!

    评:没听见啊。。。

4. 煮多了,就有经验了。。。

    评:人工智能的典范

posted @ 2008-07-23 11:59 在天空飞翔 阅读(130) | 评论 (2)编辑
posted @ 2008-05-16 13:19 在天空飞翔 阅读(32) | 评论 (0)编辑
有时需要将程序设置成随系统启动,最简单的一种就是放在  程序-->启动组里面。

其实就是创建一个快捷方式而已, 呵呵

我们需要一个 com 组件,  名叫 "Window Script Host Object Model ", 将它加入引用中

代码就很简单了, 为了方便调用, 将它写成一个函数
/// <summary>
        
/// 将程序的快捷方式添加到启动组
        
/// </summary>
        
/// <param name="fullPath">程序全路径</param>

        private void AddShortCutToStartup(string fullPath)
        
{
            
if (string.IsNullOrEmpty(fullPath))
                
return;
            IWshRuntimeLibrary.WshShell shell 
= new IWshRuntimeLibrary.WshShell();
            
try
            
{
                
//取得快捷方式的路径
                
//快捷方式其实是一个后缀为 lnk 的文件
                string link = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup)
            , Path.GetFileNameWithoutExtension(fullPath) 
+ ".lnk");
                
if (!File.Exists(link))
                
{
                    IWshRuntimeLibrary.IWshShortcut shortCut 
= (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(link);
                    
//设置目标路径
                    
//shortCut 还有很多方法,比如 HotKey, IconLocation 等等,不再赘述
                    shortCut.TargetPath = fullPath;
                    shortCut.WindowStyle 
= 1;
                    shortCut.Save();
                }

            }

            
catch (Exception ex)
            
{
                log.Error(
"AddShortCutToStartup Error: " + ex.Message);
            }

        }

如果要将本程序做成自启动, 只需要在 Form_Load 中加一行代码就行了

AddShortCutToStartup(Application.ExecutablePath);


posted @ 2008-05-06 18:10 在天空飞翔 阅读(36) | 评论 (0)编辑
电脑里的mp3越来越多了,但全部堆积在一个文件夹内,查找起来十分不便
所以想做一个 类似 itunes 的mp3 分类工具

名称: mp3mgr (mp3 分类管理工具)  (好土的名字.....)

暂定实现的功能有

1. 监视某个文件夹,当有新增的 mp3 文件时,自动按规则分组
   分组规则有
   a.按专辑,每个专辑一个文件夹
   b.按歌手,每个歌手一个文件夹
   c.按修改时间 (比如最近两天下载的单独放一个文件夹)
  
   分组后的文件处理方式
   a.将源文件移动到新的分组中
   b.将源文件复制到新的分组中
   c.将源文件创建一个快捷方式到新的分组中 (节省空间)
   d.将分组后的文件建立一个 pls (playlist文件)
2. 可修改 mp3 文件的 tag 信息
3. 基本的播放功能
4. 开机自动运行


OK, 就这些功能了, 马上开始,呵呵。
posted @ 2008-04-10 20:42 在天空飞翔 阅读(50) | 评论 (0)编辑
     摘要: 工作好忙。。。所以现在才来更新。。。有了前面的铺垫,要加入功能就很简单了,下面我们加入对函数的支持一、函数的要点有3个1. 名称: 没有名字可程序就不能识别了,呵呵 例: Sin, Cos, Abs 等2. 参数:一个函数至少要有一个参数,参数必须放到括号里, 多个参数用逗号(,)分隔3. 计算:函数必须有一个输出值二、了解了这几点,加入函数的功能还是比较容易的1.根据函数的要点定义基类 Func... 阅读全文
posted @ 2008-03-26 17:06 在天空飞翔 阅读(2211) | 评论 (6)编辑
健康叫扎式  
抬举叫按前  
昨天叫那昨  
明天叫门落  
后天叫后袜  
前天叫那千儿  
天气叫天倒
你们叫你者  
我们叫我者  
他们叫他者  
吃饭叫七饭  
没有叫冇得  
知道吗叫找不找得到?  
不喜欢叫进不得,不怀喜
骗人叫货人  
傻子叫哈吧,勺
舒服叫屈服  
冻得发抖叫冻得赛  
小狗叫狗娃  
爷爷叫低碟  
奶奶叫婆婆  
爸爸叫百百,老头  
妈妈叫恩妈
伯伯叫百叶  
小孩叫小伢
哥哥叫拐子
姐姐叫几接
吹牛叫发抛  
放便炮叫放炮中  
干什么?叫搞么丝?
在哪里?叫带哪哈?  
怎么办?叫马搞?
厕所叫告挖,毛丝
刚刚叫冒一哈,江家
同意叫可得
头叫脑棵  
背叫闭先  
额叫额棵  
腋窝叫斜噶闹
膝盖叫客其包
脏叫龌龊,呐瓜
打架叫杠祸
衬衣叫晃挂  
客厅叫涛屋
游泳叫麻汗儿,打古求
搞怪叫挖气  
可怜叫躁叶
刷牙叫洗口
喝水叫喝匪
利害叫握灶
青蛙叫克马
蹲着叫哭倒
汤勺叫瓢梗
腿部叫垮子
小偷叫墙头
小气叫满尖 
龌龊叫次人
洗脸叫抹汗
倒霉叫闭十
明天叫门那 
可能叫包阮
经常叫带茶
想哈叫运哈
想你叫欠你
脖子叫井子枯
吃早餐叫过早
仔细叫捉个大精
好烦人叫几打结
打磕睡叫打豁信
小腿叫连把陡子
说假话叫车白掉慌
长得漂亮叫长得刮气
posted @ 2008-01-31 18:31 在天空飞翔 阅读(55) | 评论 (0)编辑
国际小学生竞赛题,有一道各国小朋友都做不了:针对其他国家里粮食短缺问题,请你谈谈自己的看法。  
非洲的小朋友拿到题不知道什么是“粮食”;  
欧洲的小朋友拿到题不知道什么是“短缺”;  
美国的小朋友拿到题不知道什么是“其他国家”;  
南美的小朋友拿到题不知道什么是“请”;  
中国的小朋友拿到题不知道什么是“自己的看法”。
posted @ 2008-01-17 12:50 在天空飞翔 阅读(156) | 评论 (0)编辑
     摘要: 中缀转后缀需要处理的有:1. 操作数,操作符的提取2. 括号等关系到运算符优先级的符号3. 一元操作符(如 +(正), -(负)) 等4. 操作符和操作数的匹配,括号的匹配,(函数参数的个数是否正确等)基本思路如下:用一个链表 List<ExpressionToken> 储存将要生成的后缀表达式用一个栈 Stack<OperatorType> 储存操作符判断当前节点, 如果... 阅读全文
posted @ 2008-01-02 13:31 在天空飞翔 阅读(1752) | 评论 (11)编辑
     摘要: 12 + sin(sqr(9) + 9) + abs(-90)给这么一段字符串给你, 要如何才能正确计算出它的值? (注: 值应为 103 )算术表达式的计算有几种方法,本文只讨论“后缀表达式(也叫'逆波兰表达式')方法”后缀表达式是啥意思呢? 顾名思义,就是操作符在操作数的后面,比如 12+36 转换为后缀表达式后就变成12 36 + 注:本文中的后缀表达式是用 List... 阅读全文
posted @ 2007-12-29 11:29 在天空飞翔 阅读(1586) | 评论 (15)编辑