Server.Transfer 神奇问题!!郁闷死人

亮声lz 2010-12-03 05:55:51

HttpContext.Current.Server.Transfer(templatepath + ".aspx");
HttpContext.Current.Response.End();


在本地多台服务器测试同样的代码,一切正常
而在正式服务器里,就报下面的错误
尝试了把服务器的代码下载到本地执行,同样是OK的
唯独在服务器上不行,郁闷死哈。

Baidu和Google了N篇关于Server.Transfer的文章,相关的方法都试了,都没有办法解决!!
连.net 4.0都重装了一次。。。。
实在没办法了

各位遇到过同样的问题的兄弟,帮帮忙


首先确定几点:
一、代码绝对完全相同
二、web.config配置文件绝对相同
三、服务器操作系统相同
四、IIS设置,能想到的可能影响到的都检查了,本地与服务器是一致的




“/”应用程序中的服务器错误。
没有为请求类型“GET”找到 HTTP 处理程序。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 没有为请求类型“GET”找到 HTTP 处理程序。

源错误:

行 16: */
行 17:
行 18: base.Page_Load(sender, e);
行 19:
行 20: templateBuilder.Append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n");


源文件: d:\www\kotii.com_2.0\aspx\newdefault\shop\view.aspx 行: 18

堆栈跟踪:

[HttpException (0x80004005): 没有为请求类型“GET”找到 HTTP 处理程序。]
System.Web.HttpApplication.MapIntegratedHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig, Boolean convertNativeStaticFileModule) +545
System.Web.HttpServerUtility.Execute(String path, TextWriter writer, Boolean preserveForm) +1235

[HttpException (0x80004005): 为 view_安蒂娅_雪山温泉.aspx 执行子请求时出错。]
System.Web.HttpServerUtility.Execute(String path, TextWriter writer, Boolean preserveForm) +4668259
System.Web.HttpServerUtility.Transfer(String path, Boolean preserveForm) +75
LeadWit.CMS.UI.shop.view.Page_Load(Object sender, EventArgs e) +1058
ASP.aspx_newdefault_shop_view_aspx.Page_Load(Object sender, EventArgs e) in d:\www\kotii.com_2.0\aspx\newdefault\shop\view.aspx:18
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3048


版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.1
...全文
462 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
亮声lz 2010-12-14
  • 打赏
  • 举报
回复
目前我已经改了程序方案
避开使用“Server.Transfer”来实现需要的功能
但问题还是在那里的
亮声lz 2010-12-14
  • 打赏
  • 举报
回复
network serivce
users
IIS站点用户

都拥有除“完全控制”外所有权限
int64 2010-12-10
  • 打赏
  • 举报
回复
目录需要有network service用户权限
亮声lz 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 zming 的回复:]

同情ing……

如果楼主对于正式服务器与本地服务器的相关配置都已比对过,

现在是最后一招:

将本地服务器(物理机)搬至正式服务器的物理位置,
配上正式服务器的IP,替代正式服务器进行测试。
[/Quote]

我!@#¥……
zming 2010-12-10
  • 打赏
  • 举报
回复
同情ing……

如果楼主对于正式服务器与本地服务器的相关配置都已比对过,

现在是最后一招:

将本地服务器(物理机)搬至正式服务器的物理位置,
配上正式服务器的IP,替代正式服务器进行测试。





亮声lz 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 myhope88 的回复:]

肯定是服务器设置的问题嘛,看看版本是不是一致啦,iis是不是还得设置啥东西,或者服务器本身的权限设置了
[/Quote]

往这方面努力了
能想到的设置,都一一检查并与本地对比了
仍然解决不了
myhope88 2010-12-06
  • 打赏
  • 举报
回复
肯定是服务器设置的问题嘛,看看版本是不是一致啦,iis是不是还得设置啥东西,或者服务器本身的权限设置了
亮声lz 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 jshi123 的回复:]

服务器是iis7吧,试下单独建个AppPool,用经典模式
[/Quote]

首先在IIS7下,是不建议用经典模式的,并且我的程序在经典模式下运行要设置很多东西,非常不方便
再者,IIS7下建的站点,默认都是不同的AppPool,也就是不同的应用程序池,完全独立的进程
亮声lz 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dfhdhq 的回复:]

先把路径用Server.MapPath()转下。
[/Quote]



。。。。。。。。。。。神马。。。。。



亮声lz 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 zming 的回复:]

楼主,

你的“本地服务器”的OS版本、IIS版本是什么?
你的“正式服务器”的OS版本、IIS版本是什么?
[/Quote]

完全一致啊!!
liyoubaidu 2010-12-06
  • 打赏
  • 举报
回复

templatepath=Server.UrlEncode(templatepath)+".aspx";
HttpContext.Current.Server.Transfer(templatepath);
exiori 2010-12-06
  • 打赏
  • 举报
回复
感觉是权限问题。
jshi123 2010-12-05
  • 打赏
  • 举报
回复
服务器是iis7吧,试下单独建个AppPool,用经典模式
亮声lz 2010-12-04
  • 打赏
  • 举报
回复
唉~~
兄弟们
楼上几们几位兄弟说的“可能”是根本排除的
这里再补充一下
templatepath= " view_xxx ";
即templatepath是一个文件名(不包含后缀的)
再就是说,楼上几位兄弟,完全同样的代码,完全同样的操作系统,几乎完全同样的IIS配置
但本地与服务器就是不同

再就是像楼上几位说的情况,如果是

这个值中不允许出现 http://...... 之类的东东
这个值中仅允许出现 /... 这类的东东

错误提示,也不会是现在的!!


重点,提示错误是:
异常详细信息: System.Web.HttpException: 没有为请求类型“GET”找到 HTTP 处理程序。

这个并不是常规错误
rczjp 2010-12-04
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090817/16/7bb9c10a-339e-4def-92fb-78bb092e5829.html
zming 2010-12-04
  • 打赏
  • 举报
回复
楼主,

你的“本地服务器”的OS版本、IIS版本是什么?
你的“正式服务器”的OS版本、IIS版本是什么?
zming 2010-12-03
  • 打赏
  • 举报
回复
你的 templatepath 变量中的值有问题,

这个值中不允许出现 http://...... 之类的东东
这个值中仅允许出现 /... 这类的东东

如果这个值中必须出现 http://.... 之类的东东,请改用 Web Service 处理。
newdigitime 2010-12-03
  • 打赏
  • 举报
回复
templatepath + ".aspx");
改为
templatepath + "\.aspx");
试试

weakey 2010-12-03
  • 打赏
  • 举报
回复
先把路径用Server.MapPath()转下。
wuyq11 2010-12-03
  • 打赏
  • 举报
回复
加载更多回复(10)

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧