C# .NET Webforms路由在本地主机上工作,但在IIS 8上不工作
我正在创建一个.NETWebForms应用程序,并首次尝试使用友好的URL。该应用程序的目标是框架4.7.1。一切都很简单,在localhost上工作得很好。当我将其部署到测试服务器(运行IIS版本8.5.9600.16384)时,会得到一些奇怪的结果。如果routeUrl等于物理页面名称,则页面将正确路由并保留友好的url结构,但如果routeUrl不相等,则会给出404。即使路由有效,路由值也不会传递到页面。Page.RouteData.Values.Count始终返回为0,即使在设置默认值时也是如此 我已经查看了Stack Overflow和互联网的其他部分,我甚至不知道有多少类似问题的人发的帖子,但在少数有建议的解决方案的案例中,没有一个对我有效。下面是我根据这些建议在web配置中更改的内容,但都没有用 我现在所拥有的: RouteConfig.csC# .NET Webforms路由在本地主机上工作,但在IIS 8上不工作,c#,asp.net,iis,webforms,routing,C#,Asp.net,Iis,Webforms,Routing,我正在创建一个.NETWebForms应用程序,并首次尝试使用友好的URL。该应用程序的目标是框架4.7.1。一切都很简单,在localhost上工作得很好。当我将其部署到测试服务器(运行IIS版本8.5.9600.16384)时,会得到一些奇怪的结果。如果routeUrl等于物理页面名称,则页面将正确路由并保留友好的url结构,但如果routeUrl不相等,则会给出404。即使路由有效,路由值也不会传递到页面。Page.RouteData.Values.Count始终返回为0,即使在设置默认值
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute( //"works", but no route values when navigate to /giftcard/something
"new-giftcard",
"giftcard/{action}",
"~/giftcard.aspx",false, new RouteValueDictionary { { "action", "add" } });
routes.MapPageRoute( //returns 404 when navigate to /random/something
"randomtest",
"random/{action}",
"~/giftcard.aspx", false, new RouteValueDictionary { { "action", "test" } });
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
}
Global.asax
void Application_Start(object sender, EventArgs e)
{
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
Web.config(我基于对可能问题的研究而添加的东西,但没有一个有用)
所有这些似乎在localhost上都能很好地工作。因为它都是在本地工作的,IIS处理路由的方式肯定有问题,但我在这里不属于我的专业领域,所以任何关于更改什么或如何调试的其他想法都是很好的
以下是我在live server上的当前设置,仅供参考:
IIS版本8
应用程序池.NET4.0集成
目标框架.NET 4.7.1
我在本地开发机器上检查了IIS Express,它的版本是10
编辑:进一步的信息-我在一个新的测试服务器上试用了它,新安装了Server2012,它似乎可以工作。与上述测试服务器不同,此新服务器只安装了.NET 4.0。第一台服务器较旧,安装了.NET 3.5和4。可能与.NET版本冲突?检查哪个模块返回404,然后可以采取措施。是否启用iis的HTTP重定向功能?link:@JalpaPanchal我记得在我自己的研究中看到过你在某个时候发布的链接……我检查了HTTP重定向是否已启用,并将该内容添加到我的web配置中,但仍然没有任何内容。@LexLi对/random/something请求的请求跟踪失败,该请求应与我的一条路由规则相匹配,结果如下:ModuleName IIS Web核心通知映射\请求\处理程序HttpStatus 404 HttpReason Not Found HttpSubStatus 0错误代码系统找不到指定的文件。(0x80070002)检查哪个模块返回404,然后可以采取措施。是否启用iis的HTTP重定向功能?link:@JalpaPanchal我记得在我自己的研究中看到过你在某个时候发布的链接……我检查了HTTP重定向是否已启用,并将该内容添加到我的web配置中,但仍然没有任何内容。@LexLi对/random/something请求的请求跟踪失败,该请求应与我的一条路由规则相匹配,结果如下:ModuleName IIS Web核心通知映射\请求\处理程序HttpStatus 404 HttpReason Not Found HttpSubStatus 0错误代码系统找不到指定的文件。(0x80070002)
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" >
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>