做一个HttpModule ,用GetPreloadedEntityBody()取数据总是报引用空的异常.(同样代码在2003中可以).在BAIDU和GOOGLE上也搜到类似问题,但是没有看到答案...求教了!!
解决方案 »
- 麻烦大家推荐一本 Reporting Services 教程 !
- 在 ASP.NET2.0 中能不能/怎么用 NUnit 进行单元测试?
- Microsoft Visual Studio .NET 2003开发asp.net问题
- 请问asp.net入门问题!!!
- 一个关于URL的问题,希望大家帮我看看
- ASP.net MVC5 如何取得分部视图对应的模型数据
- 在asp.net 中怎样 用 crystal report 生成 word,excel等这些文件然后下载
- 救命呀!为什么我的.net一装上就用不了?
- Microsoft Internet Explorer WebControls的问题!微软专家来看!高手来看!
- webservice接口
- asp.net中发邮件求助,紧急.
- 省市县 三级联动 ,数据如何存入数据库
自定义的HttpModules必须用HasEntitybody方法来检查web 服务器是否已经预加载了客户端的请求数据。
如果没有就必须使用ReadEntityBody来获取客户端的请求数据
HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest));
string addr = wr.GetLocalAddress();
Response.Write(String.Format("NiC Address:{0}<BR>", addr));
byte[] bs = wr.GetPreloadedEntityBody();
String s = "";
if (bs != null && bs.Length >0)
s= System.Text.Encoding.Default.GetString(bs);
Response.Write(s + "<BR>");
if (!wr.IsEntireEntityBodyIsPreloaded())
{
Response.Write("normally shouldn't be here");
int n = 1024;
byte[] bs2 = new byte[n];
while (wr.ReadEntityBody(bs2,n) >0)
{
s = System.Text.Encoding.Default.GetString(bs2);
Response.Write(s + "<BR>");
}
} note, as IIS receives data on its TCP/IP connection from the browser, it sends a copy to the ASP.NET worker process through a named pipe. You use ReadEntityBody to read the data from this pipe. But you might not need to use ReadEntityBody if the data is not huge
如还不明白可与我联系:[email protected]
了NULL,依然没有解决问题!