.NET MVC OutputCache

Web.config

<system.web>
<!–页面缓存–>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<!–缓存5分钟–>
<add name=”indexindex” duration=”300″ varyByParam=”*” location=”Any”/>
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>

 

Controller

public class IndexController : Controller
    {
        [OutputCache(CacheProfile = "indexindex")]
        // GET: Home
        public string Index()
        {
            return DateTime.Now.ToString();
        }
    }

Visual Studio内置IIS服务器如何允许局域网内其它电脑远程访问?

参考文章:http://blog.csdn.net/zhangjk1993/article/details/36671105

用Visual Studio启动网站后,仅支持本地调试访问,其它电脑访问会报Invalid Hostname 400等错误。如何解决呢?

  1. 在VS中启动网站后,屏幕右下角会出现IIS Express的托盘图标。
  2. 点击托盘,选择查看所有,点击列表中的该网站,即可看到下方提示中包含一项applicationhost.config及该文件的位置。
  3. 找到该文件进行编辑, 找到<binding protocol=“http” bindingInformation=“*:8080:localhost” />,将localhost改为本机的IP即可,比如192.168.1.110,或者改为*。
  4. 在VS中重新启动网站。

.NET下JSON的序列化和反序列化

参考文章:http://www.cnblogs.com/youring2/archive/2012/05/28/2520922.html

添加引用:

使用NuGet,命令:install-package Newtonsoft.Json

实体类:

[csharp]
public class Message
{
public String message { get; set; }
public int code { get; set; }
}
[/csharp]

序列化和反序列化:
[csharp]
Message message = new Message() { code = 0, message = “”};
Console.WriteLine(JsonConvert.SerializeObject(message));

string jsonMessage = “{‘code’:’200′, ‘message’:’操作成功’}”;
Message msg = JsonConvert.DeserializeObject(jsonMessage);
Console.WriteLine(msg.ToString());
[/csharp]

如何在网页中启动本地应用程序

说到单点登录,往往是和Portal(门户)是离不开的。通常企业中会有许多应用,WEB的或CS的。而做Portal的时候往往是做成WEB的。这时候,用户登录Portal后,如何从Portal启动本地的CS程序,就成为需要解决的问题。
不知道大家是如何解决的,我的做法是,自己实现一个协议(就象迅雷/电驴/网络蚂蚁那样),在Portal上实现一个形如
[html]
协议名称://应用名称/作业?action=动作&param1=参数1&param2=参数2…
[/html]
这样的例子可能是(我们协议名是用公司简称,这里我就用foo):
[html]
<a href=”foo://erp/order?action=query&owner=hydonlee”>我的订单</a>
[/html]
通过这样的设计,让浏览器象处理http协议的链接一样,把请示发送给我们的应用。
那如何让浏览器将这个链接发送给我们的协议处理器呢?这就需要向系统中注册一下(Windows下),注册表如下:

[csharp]
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\foo]
@=”URL: foo Application 协议”
“URL Protocol”=””

[HKEY_CLASSES_ROOT\foo\DefaultIcon]
@=”d:\\workspace\\fooPortal\\bin\\client\\foo.protocolhandler.exe,1″

[HKEY_CLASSES_ROOT\foo\shell]

[HKEY_CLASSES_ROOT\foo\shell\open]

[HKEY_CLASSES_ROOT\foo\shell\open\command]
@=”\”d:\\workspace\\fooPortal\\bin\\client\\foo.protocolhandler.exe\” \”%1\””

[/csharp]
怎么样?是不是很简单?其实将这个加入注册表之后,你可以开始->运行,输入:foo://test/ 回车,来测试你的协议处理器了!windows系统会把网址作为参数提供给命令行。
注册协议处理器的C#代码如下,我是写在协议处理器的类中的:

[csharp]
private void FooProtocolRegister() {
// copyright(c) hydonlee, 转载请注明原址
RegistryKey cr = Registry.ClassesRoot;

RegistryKey Fookey = cr.CreateSubKey(“Foo”);

//添加Foo键
Fookey.SetValue(“”, “URL: Foo Application 协议”);
Fookey.SetValue(“URL Protocol”, “”);

//添加DefaultIcon
RegistryKey iconKey = Fookey.CreateSubKey(“DefaultIcon”);
iconKey.SetValue(“”, string.Format(“{0},1”, Application.ExecutablePath.ToLowerInvariant()));

//添加Shell Key
RegistryKey shellKey = Fookey.CreateSubKey(“shell”);
RegistryKey openKey = shellKey.CreateSubKey(“open”);
RegistryKey commandKey = openKey.CreateSubKey(“command”);
commandKey.SetValue(“”, string.Format(“\”{0}\” \”%1\””, Application.ExecutablePath.ToLowerInvariant()));

Fookey.Close();
}

[/csharp]
这样,由浏览器的链接,已经传递到我们本地的应用中了,剩下的事情就比较简单了。协议处理器分析这个地址,呼叫相应的作业插件,并将参数传入。
简单来说就是:通过协议地址模型,Portal生成链接->浏览器发起请求->协议处理器分派–>各应用插件启动作业

Visual Studio 2010使用Visual Source Safe2005进行版本管理

最近用上了vs2010..呵呵

昨天要团队做一个网站..

发现本来的Add Project Source Control.. 菜单项 已经变成了连接到 TFS源代码管理器了..

无奈没有TFS2010 服务器..试了几次无法连接到VSS2005..

google 了一下.. 才找到 原来vs2010 也可以连接到vss2005 的..呵呵

原文:

To configure VSS2005 with VS2010 we can change the settings in Tools-> Options-> Source Control-> Select the Vss Source Safe option.

Then try to open the solution or project directly see that will help.

Cheers 🙂

..

PostURL:http://social.msdn.microsoft.com/Forums/fr-FR/vssourcecontrol/thread/a3526c4c-9227-49da-93b3-709398b3d5b9

 

然后建议安装一个vss2005更新:VSS integration with Dev10

http://code.msdn.microsoft.com/KB976375

 

VSS用法指南

The usage of VSS (Visual Source Safe 2005)

1. 首先,当然是得安装好Visual Source Safe 2005

你可以在Visual Studio 2005的安装光盘中找到VSS目录,相关的安装文件就在那个目录下,如果你的光盘上没有,你可以发送一封邮件给我:stillful@foxmail.com, 我可以发送一份给您。

安装好VSS后程序菜单中应该已经有相应的快捷方式了:

image

2. 配置”Microsoft Visual SourceSafe Administration“(VSS管理器VSSA)

1). 启动VSS管理器 (因汉化包的效果并不理想,偶建议大家还是使用英文版)

2). File – > New database… (文件->新建数据库)

image

image

若您的盘符仍是FAT32文件系统,会出现警告信息:

image

建议,使用以下方法快速转换您的盘符到NTFS格式,否则VSS权限设置功能会受限。

 

如何快速将硬盘从FAT32转换为NTFS  (Windows XP下

i.   开始->”运行”   –  cmd

ii.  打开窗口以后,在光标的提示符下输入“covert X:/FS:NTFS”,然后回车。

注意在“covert”的后面有一个空格,这里的X就是您刚才指定Location所在的盘符。

iii. 接着系统会要求你输入X盘的卷标,然后回车。

卷标在“我的电脑”中点X盘,然后看它的属性可以找到。

这样就可简单地转换分区格式为NTFS了。这个方法只用于FAT32转为NTFS,不能将NTFS转为FAT32.

iv.该方法仅在windowsXp下测试成功,其他操作系统未用测试。

v. 转换的方法有很多,可以考虑使用http://news.softhouse.com.cn/news/show/10468.html上提供的更多方法。

 

继续:

3. 给自己项目的VSS起个名字,可以用类似:”VSS-My Project Source Code”这样的名字

image

4. 使用以下默认选项:

image

5. 完成了数据库的设置:

image

6. 完成后OK即可:

image

7. 来看一看新建数据库后VSS管理器(VSSA)里已经默认建立的用户名列表:

image

显然,默认情况下VSSA会创建三个用户帐号:

Admin,Guest,当前登录的用户名

8. 进入服务器配置

image

image

9. 确定后就会有服务新增:

image

10. 直接允许(如果你也装过360安全卫士的话)

image

现在可以修改Admin的密码了,空密码在客户端连接时易造成很大困惑,建议一定要改!

11. 双击Admin帐号或

image

12. 修改完成后

image

13. 最后,设置My Project的权限:共享和Web共享都开放全部权限(安全考虑可以清除Everyone权限,添加Administrators权限)

image

========到本步骤,服务器端已经设置完毕,现在可以转入客户端的VSS来配置了。=========

 

14. 在Lan的计算机上(客户端) 同样安装好VSS

 

15. 转入 “Microsoft Visual SourceSafe” (VSS)

打开已存在的数据库:

image

16. 连接到服务器的数据库

image

18. 新建连接后可以打开了!

image

19. 指定VSS目录所对应的本地的“工作目录”

image

20.本地的工作路径(截图时采用同一机器作的实验,所以能够看得到My Project(勿怪!)

image

 

21. 启动Visual Studio 2005 部署你的项目到VSS

在客户端启动VS2005,将项目框架部署到VSS中去:

1). 工具->选项

image

2). 插件设置

image

3). 将解决方案添加到源代码管理中:

image

4). 用帐号登陆:

image

5). 新建的VSS项目名称:归属到$/根目录下:

image

访问是否新建目录:

image

 

22. 现在的视图有变化了:

image

 

23. 对所有的团队开发成员约定以下几点:

1. 必须下载最新版本后现进行修改;

2. 修改需要签出(Check out)

3. 当完成修改后及时签入(Check in)

4. 不要一性长久签出多个文件(会造成团队其他成员长时等待)

5. 建议由项目管理人员首先将项目框架部署好,其他团队成员可以使用VS“获取”来得到最新版本数据

 

24. 图示1)位置为获取最新版本,2)为签出(修改前必须这样做)

image

其他几张截图:

当签出以进行编辑时的提示框(选项中可以关闭之)

image

被Default.aspx被签出到本地后的标志是前面打上了红勾!

image

当被签出后,其他人员在VSS中看到该文件的状态:

image

ASPX网站运行原理(转自:ASP.NET运行机制)

1.ASP.NET运行原理概述

 

  如上图,当一个http请求发送过来并被IIS机收到之后,IIS首先通过你请求的页面类型为其加载相应的dll文件,然后在处理过程中将这条请求发送给能够处理这条请求的模块,而在ASP.NET中这个模块就叫做HttpHandler,为什么aspx这样的文件可以被服务器处理,那是因为在服务器端有默认的HttpHandler专门处理aspx文件,IIS再将这条请求发送给能够处理这条请求的模块之前,还需要经过一些HttpModule,这些都是系统默认的Modules,而且在这个http请求传到HttpHandler之前要经过不同的HttpModuls的处理,这就像我们如果要乘坐国际航班飞抵异国他乡的话,在 你真正坐上飞机前,要经过购买机场建设费,办理登记手续核实身份,进行行李打包托运,进行安全检察,现在又要进行体温等检察一样,需要经一系列的严格的手 续。这样做有什么好处,一是为一些必须的过程,二是为了安全性,三是为了提高效率,四是为了我们能够在更多的环节上进行控制,即增强了我们的控制能力。而 上述的都是系统的,怎么能说是我们的对http请求控制能力能,那么我们是否可以建立自己的HttpModule和HttpHandler吗?答案是肯定的。但我们先不要急于做事,让我们再深入研究一下运行机制吧。

2.ASP.NET运行机制

 

  那么上面这张图让我们能够更清楚地看到一个http请求是如何经过服务器的处理的,同时通过这张图我们也可以看出Request是掌管着所有客户端输入的。图中为我们展示了一个http请求有可能经过的四条路线。当你第一次访问这个页面时这个请求首先依次经过HttpModuls和HttpHandler的处理,而在HttpHandler的处理中服务器会为你转到你真正要访问的页面,然后通过ASP Engine来找到这个页面背后的类,并实例化为一个临时对象,再此过程中会触发一系列的事件,其中一部份的事件需要经过对象中的方法处理,之后服务器会将这个处理后页面发移交给Response对象,然后由Response对象将这个页面发送到客户端。这就是第一条路线,而当你在这个页面上进行重新提交一些信息,并继续向服务器发送请求时,因为你的服务器之间的会话已经建立,对于你所在的那个临时对象在服务器中已经建立,所以不用再经过初始化页面的工作,故这第二条路线是按照 HttpModuls,HttpHandler,然后直接与临时对象交互,然后返回的。第三条路线与第二条不同的是在处理请求时如果涉及到需要调用ASP Cache,既ASP 缓存的,而临时对象回将直接从ASP 缓存提取信息并返回.这第四条路线就是当你刷新这个页面的时候,服务器接收到时发现这个请求先前已经处理过了,并将处理结果存储到由一个默认的HttpModule管理的输出缓存中了,那么我们就可以直接从这个缓存提取信息并返回,而无需再重新处理一遍了。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/flashlm/archive/2007/07/06/1681487.aspx

ASP 500错误 解决办法

给一客户网站接入支付宝接口,本来很简单的一个事,却因为回调页面老是出现HTTP 500错误而无法解决。

今天早晨换了个浏览器,终于知道怎么回事了,是程序本身的一个错误,包含文件时的路径不对。

所以,当大家碰到ASP程序的500错误时,先不要尝试网上介绍的那些这是出于IIS本身问题的办法。

我的建议是:换上谷歌浏览器访问出错页面

给大家两个截图,上面的是谷歌浏览器访问错误页面,下面的是用IE浏览器访问同一个错误页面:


所以,对于开发人员来说,谷歌浏览器是非常有用的。它清晰地指出了错误在哪儿,而不是简单地返回给你一个500错误提示。