分类 .NET 下的文章

VS2008里调试出错:打开的 URL 的 IIS 辅助进程当前没有运行

把网站设置到IIS里面运行,然后F5调试,出现如下的错误:

无法在 Web 服务器上启动调试。打开的 URL 的 IIS 辅助进程当前没有运行。

英文描述:

Unable to start debugging on the Web server.  The IIS worker process for the launched URL is not currently running.

折腾了半天,还是在国外的网站上面找到了解决方法,原来是因为我的电脑出现了两个本地IP,在IIS里建立网站的时候就随便选了一个IP,只要把这个IP地址选择为“全部未分配”,就是“*”就可以调试了。就是绑定域名那里选择IP的时候不能用固定的,不选择IP就行了。

用PagePaser创建Page作为HttpHandler

在ASP.NET中,page其实就是一个HttpHandler,它处理请求,然后返回一大堆Html。那么是不是可以实例化一个Page类然后获得其处理的结果呢?一个简单的推理就能说明这是不行的。因为如果我们实例化Page,这样new Page(),这是一个标准的.net代码,编译器无法知道相关的Page.aspx的内容。所以需要PagePaser帮忙,并且PagePaser也是ASP.NET内部编译过程的关键步骤。下面看看使用方法:

- 阅读剩余部分 -

(转载).NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)

来自:http://www.cnblogs.com/skynet/archive/2010/04/29/1724020.html

前几天逛codeproject时,遇到一篇比较好文章,不敢独享,故译之于君共享。Outline如下:

  • 1、引言
  • 2、两个处理步骤
    • 2.1、创建ASP.NET环境
    • 2.2、用触发的MHPM事件处理请求
  • 3、什么事件中应该做什么
  • 4、示例代码
  • 5、深入ASP.NET页面事件

- 阅读剩余部分 -

[windows2008 iis7].net伪静态url中有空格或加号不能运行的解决方法

在iis7下,url中包含空格的伪静态,将不能正常访问,比如:http://junstyle.me/shop/list-361+%b6%c8-2.htm
会出现请求筛选模块被配置为拒绝包含双重转义序列的请求。HTTP 错误 404.11 - Not Found
解决方法如下:
1、在地址栏输入: %windir%\system32\inetsrv\config\applicationhost.config然后单击 打开 。
2、在 ApplicationHost.config 文件, 定位到文件中的 configuration/system.webServer/security/requestFiltering/下
<requestFiltering> 节点。大约360行
将<requestFiltering>
改为
<requestFiltering allowDoubleEscaping="true">
即可

或者在网站的web.config里修改或添加该节点,效果一样。
[code language="xml"]
<configuration>
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true"></requestFiltering>
</security>
</system.webServer>
</configuration>
[/code]

FTP状态码详细讲解

1xx - 肯定的初步答复这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。 • 110 重新启动标记答复。
• 120 服务已就绪,在 nnn 分钟后开始。
• 125 数据连接已打开,正在开始传输。
• 150 文件状态正常,准备打开数据连接。

2xx - 肯定的完成答复
一项操作已经成功完成。客户端可以执行新命令。 • 200 命令确定。
• 202 未执行命令,站点上的命令过多。
• 211 系统状态,或系统帮助答复。
• 212 目录状态。
• 213 文件状态。
• 214 帮助消息。
• 215 NAME 系统类型,其中,NAME 是 Assigned Numbers 文档中所列的正式系统名称。
• 220 服务就绪,可以执行新用户的请求。
• 221 服务关闭控制连接。如果适当,请注销。
• 225 数据连接打开,没有进行中的传输。
• 226 关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。
• 227 进入被动模式 (h1,h2,h3,h4,p1,p2)。
• 230 用户已登录,继续进行。
• 250 请求的文件操作正确,已完成。
• 257 已创建“PATHNAME”。

3xx - 肯定的中间答复
该命令已成功,但服务器需要更多来自客户端的信息以完成对请求的处理。 • 331 用户名正确,需要密码。
• 332 需要登录帐户。
• 350 请求的文件操作正在等待进一步的信息。

4xx - 瞬态否定的完成答复
该命令不成功,但错误是暂时的。如果客户端重试命令,可能会执行成功。 • 421 服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。
• 425 无法打开数据连接。
• 426 Connection closed; transfer aborted.
• 450 未执行请求的文件操作。文件不可用(例如,文件繁忙)。
• 451 请求的操作异常终止:正在处理本地错误。
• 452 未执行请求的操作。系统存储空间不够。

5xx - 永久性否定的完成答复
该命令不成功,错误是永久性的。如果客户端重试命令,将再次出现同样的错误。 • 500 语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。
• 501 在参数中有语法错误。
• 502 未执行命令。
• 503 错误的命令序列。
• 504 未执行该参数的命令。
• 530 未登录。
• 532 存储文件需要帐户。
• 550 未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。
• 551 请求的操作异常终止:未知的页面类型。
• 552 请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。
• 553 未执行请求的操作。不允许的文件名。
常见的 FTP 状态代码及其原因
• 150 - FTP 使用两个端口:21 用于发送命令,20 用于发送数据。状态代码 150 表示服务器准备在端口 20 上打开新连接,发送一些数据。
• 226 - 命令在端口 20 上打开数据连接以执行操作,如传输文件。该操作成功完成,数据连接已关闭。
• 230 - 客户端发送正确的密码后,显示该状态代码。它表示用户已成功登录。
• 331 - 客户端发送用户名后,显示该状态代码。无论所提供的用户名是否为系统中的有效帐户,都将显示该状态代码。
• 426 - 命令打开数据连接以执行操作,但该操作已被取消,数据连接已关闭。
• 530 - 该状态代码表示用户无法登录,因为用户名和密码组合无效。如果使用某个用户帐户登录,可能键入错误的用户名或密码,也可能选择只允许匿名访问。如果使用匿名帐户登录,IIS 的配置可能拒绝匿名访问。
• 550 - 命令未被执行,因为指定的文件不可用。例如,要 GET 的文件并不存在,或试图将文件 PUT 到您没有写入权限的目录。

来源:http://www.cnblogs.com/h2appy/archive/2008/12/12/1353548.html

C# ToString()格式大全

一、字符串

There really isn't any formatting within a strong, beyond it's alignment. Alignment works for any argument being printed in a String.Format call.

Sample Generates
String.Format("->{1,10}<-", "Hello"); -> Hello<-
String.Format("->{1,-10}<-", "Hello"); ->Hello <-

- 阅读剩余部分 -

IIS7 URL Rewrite Module的匹配规则和中文URL编码问题

折腾IIS7下的URL Rewrite Module,发现两个问题。

一、正则匹配问题,看下面的重写规则

[code language="xml"]
<rule name="rule0" stopProcessing="true">
<match url="^about/(\w+)\.html$" ignoreCase="true" />
<action type="Rewrite" url="about/{R:1}.aspx" appendQueryString="false" />
</rule>
[/code]

match里面的url的正则为^开头,可实际情况能匹配以下url:
http://www.xxx.com/about/me.html
http://www.xxx.com/yyyy/about/me.html

不知道是匹配规则写错了还是怎么着的,调试了半天无解。

- 阅读剩余部分 -

iis7.0/7.5下的httpModules设置

一个httpModule突然不起作用了,原来是iis7里面的网站应用程序池使用了默认的“集成模式”,所以所有的http请求处理都托管给了IIS,web.config里面的配置就不起效了。将程序池的模式改为“经典”之后,一切正常。当然你也可以在web.config里面加入下面的节点,就不用把程序池模式改为“经典”模式了。

[code language="xml"]
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers></handlers>
<modules>
<add name="moduleName" type="moduleClass, moduleDLLName" preCondition="integratedMode"/>
</modules>
</system.webServer>
[/code]

如果要兼顾IIS6及IIS7,可在web.config中同时保留httpHandlers(for IIS6)及handlers(for IIS7)里的相同定义,但记得要加上<validation validateIntegratedModeConfiguration="false" />,不然IIS7会因为定义重复出现而发生错误。