当前位置:编程学习 > C#/ASP.NET >>

URLRewriter错误,在网上搜了半天都找不到答案,大家帮我看看

这个错误是偶尔发生,发生之后一刷新又可以进入网页了。下面是错误信息:

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[NullReferenceException: 未将对象引用设置到对象的实例。]
   URLRewriter.ModuleRewriter.Rewrite(String requestedPath, HttpApplication app) +110
   URLRewriter.BaseModuleRewriter.BaseModuleRewriter_AuthorizeRequest(Object sender, EventArgs e) +101
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +138
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +65
--------------------编程问答-------------------- 晕,没人理偶吗?:( --------------------编程问答-------------------- 还没开始使用
帮顶 --------------------编程问答-------------------- 看不出什么问题!!! --------------------编程问答-------------------- 把你的相关的代码发出来 --------------------编程问答-------------------- 郁闷,这个问题一直困扰着我。

楼上的兄弟,就是URL重写呀。没有代码的,只是配置一下而已。难道大家都没有用过URL重写吗? --------------------编程问答-------------------- 你下载的安装版中有这个源码,看一下这一行使用的对象
是不是没有判断是否为Null --------------------编程问答-------------------- 楼上兄弟,我看了。确实没有判断是否为NULL的。该如何解决?难道可以去掉吗?

protected override void Rewrite(string requestedPath, System.Web.HttpApplication app)
{
// log information to the Trace object.
app.Context.Trace.Write("ModuleRewriter", "Entering ModuleRewriter");

// get the configuration rules
RewriterRuleCollection rules = RewriterConfiguration.GetConfig().Rules;

// iterate through each rule...
for(int i = 0; i < rules.Count; i++)
{
// get the pattern to look for, and Resolve the Url (convert ~ into the appropriate directory)
string lookFor = "^" + RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor) + "$";

// Create a regex (note that IgnoreCase is set...)
Regex re = new Regex(lookFor, RegexOptions.IgnoreCase);

// See if a match is found
if (re.IsMatch(requestedPath))
{
// match found - do any replacement needed
string sendToUrl = RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath, re.Replace(requestedPath, rules[i].SendTo));

// log rewriting information to the Trace object
app.Context.Trace.Write("ModuleRewriter", "Rewriting URL to " + sendToUrl);

// Rewrite the URL
RewriterUtils.RewriteUrl(app.Context, sendToUrl);
break; // exit the for loop
}
}

// Log information to the Trace object
app.Context.Trace.Write("ModuleRewriter", "Exiting ModuleRewriter");
} --------------------编程问答-------------------- 有人说是因为缓存失效引起的。请问大家,如何不让缓存失效?在web.config里面可以配置吗? --------------------编程问答-------------------- 不知道,我从来没有遇到过这种问题用这个控件的时候 --------------------编程问答-------------------- 根本就不用自己写程序,把微软那个下载下来,应用一下,再调整一下WEB.CONFIG就可以用了 --------------------编程问答-------------------- 是下载的微软的那个啊,也没有自己写程序,可是出现了上面的问题,时有是无,好郁闷 --------------------编程问答-------------------- 贴一下你WEB.CONFIG看看 --------------------编程问答-------------------- <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/BBS/(\d+)/(\d+)\.html</LookFor>
        <SendTo>~/BBS/BrowsePost.aspx?smallid=$1&postid=$2</SendTo>
      </RewriterRule>
      
      <RewriterRule>
        <LookFor>~/BBS/(\d+)\.html</LookFor>
        <SendTo>~/BBS/PostList.aspx?smallid=$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/BBS/SendPost-(\d+)\.html</LookFor>
        <SendTo>~/BBS/SendPost.aspx?smallid=$1</SendTo>
      </RewriterRule>
    <RewriterRule>
        <LookFor>~/articles/(\d+)\.html</LookFor>
        <SendTo>~/site_browsearticle.aspx?articleid=$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/doctors/(\d+)\.html</LookFor>
        <SendTo>~/site_browsedoctor.aspx?doctorid=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

<httpModules>
      <add name="ScriptModule" type="Microsoft.Web.Services.ScriptModule"/>
      <add name="BridgeModule" type="Microsoft.Web.Services.BridgeModule"/>
      <add name="WebResourceCompression" type="Microsoft.Web.Services.WebResourceCompressionModule"/>
      <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
    </httpModules> --------------------编程问答-------------------- 感觉这个应该没问题的 --------------------编程问答-------------------- <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /> --------------------编程问答-------------------- <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
</configSections>
<connectionStrings>

这个有用嘛? --------------------编程问答-------------------- 用了的呀。上面已经贴了出来了。郁闷 --------------------编程问答-------------------- 搜到一个帖子和我的问题一样,但是,没有给出解决方法:

“System.NullReferenceException: 未将对象引用设置到对象的实例” 出错,请帮忙解决,谢谢!
所属分类:.NET技术 ASP.NET
----------------------------------------------------------------------

采用网址重写和数据缓存,平台windows 2003,asp.net 2.0 ,此问题不涉及到数据库。

有的重写的网页,有时(很少)出现问题,出错(出错信息如下),但是刷新以后就好使了,为什么。

是重写的事情还是缓存的问题?

谢谢大家帮忙!

下面是出错的详细信息。
---------------------------------------------------------------------------------------
System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 URLRewriter.ModuleRewriter.Rewrite(String requestedPath, HttpApplication app)
   在 URLRewriter.BaseModuleRewriter.BaseModuleRewriter_AuthorizeRequest(Object sender, EventArgs e)
   在 System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)


----------------------------------------------------------------------

大部分是缓存的问题,因为出错的时候有些数据没有同步,所以程序找不到这些数据或者变量,于是就报这个错.

--------------------------------------------------------

麻烦说得详细点,应该怎么才能判断出哪里出错。
应该怎么办,来解决这个问题。

--------------------------------------------------------

一般BS页面在重置URL时,会丢失状态信息。
你给得信息太少了,看不去到底是哪个变量被丢失了。
建议你单布跟踪一下。

--------------------------------------------------------

不明白 帮顶

--------------------------------------------------------

跟踪一下

--------------------------------------------------------

顶一下

--------------------------------------------------------

比较难跟踪
通常网页能够显示,只是偶尔不能显示,应该怎么跟踪。

谢谢! --------------------编程问答-------------------- 这样看不出问题,如果不是自己写的url重写dll,用别人的话,错误很常见 --------------------编程问答-------------------- 我也碰到了这个问题,楼主解决了吗?求救!!!
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,