今天使用HttpContext去生成一个XML,想把一个值放在Session中。
于是我是这么做的
context.Session["userid"]=userid;
报NullReferenceException,奇怪了,context.Session为空?
搜索了一下,原来要继承System.Web.SessionState.IRequiresSessionState这个接口,问题解决,呵呵:)
PS:As和C#代码切换着写还真是难免会写混淆。-_-!
Code
using System;
using System.Web;
using System.Web.SessionState;
public class BuildXml: IHttpHandler, IRequiresSessionState
{
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
try
{
context.Session["userid"] = 1;
}
catch (Exception ex)
{
context.Response.Write(ex.Message);
}
}
public bool IsReusable {
get {
return false;
}
}
}
< .Net/SilverLight/WPF,CSharp >
昨天写了《使用Asp.Net绕过As3的跨域安全沙箱》,有几个小问题。
先上一副图吧。

这里A服务器是我们的服务器,假设了一个Web服务器。放有一个Asp.Net的资源转发文件(即我上面写的redir.ashx),同时有个flash的swf供网友使用。
B服务器是要获取的资源的服务器。
1、天地会上有人说那crossdomain.xml跑哪里去了,因为这里swf与asp.net的转发文件同域,因此这里不用crossdomain.xml也可以了。
2、这种方法的确比较耗资源,其实这样做也是不得已而为之,因为我们有时候需要从其他服务器取一些东西,而对方服务器又不是我们的,让flash直接去取如果对方没有放置crossdomain.xml则会失败。
最好是先判断一下B服务器是否有crossdomain.xml以及其中是否允许直接访问吧,如果允许访问就不要通过A服务器转发:)
同时,天地会上有同学qimming写了PHP和Asp的。转发一下:
<%
'用于实现Flash跨域读取文件
'注意:本程序为asp版,您的空间必须支持asp,使用过多将会加重服务器负担
dim url
url = request("url")
if url = "" then
response.End()
end if
dim obj
Set obj = Server.CreateObject("Msxml2.ServerXMLHTTP")
obj.open "GET",url,false
obj.send()
if obj.readystate<>4 then
response.Redirect(url)
end if
Response.ContentType = "application/octet-stream"
Response.BinaryWrite obj.responseBody
Set obj = nothing
%>
< .Net/SilverLight/WPF,ActionScript >
As3的SandBox这点上有点让人感觉非常郁闷。
如果要取不同域上的文件(比如歌曲,图片等),当对方服务器没有crossdomain.xml的时候就会出现安全沙箱错误。
这点有点郁闷。
中午午饭后,想到这个问题,于是用Asp.Net写了个Web Proxy。通过Asp.Net进行资源的转发,解决了跨域的安全沙箱问题。
不过这个东东会加大服务器的带宽和计算压力~
另外还有Kingfo同学的一种方法 一种猥琐的图片跨域的方法
上代码(示例尾随其后)
Read the rest of this entry »
< .Net/SilverLight/WPF,ActionScript >
1.显示序号
<%#Container.ItemIndex+1%>
2.标签嵌套
<%# %>;标签是不可以嵌套在HTML标签中的。需要这样实施嵌套。
<%#”
”%>;
< .Net/SilverLight/WPF >
Comments