Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET Webforms路由在本地主机上工作,但在IIS 8上不工作_C#_Asp.net_Iis_Webforms_Routing - Fatal编程技术网

C# .NET Webforms路由在本地主机上工作,但在IIS 8上不工作

C# .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,即使在设置默认值

我正在创建一个.NETWebForms应用程序,并首次尝试使用友好的URL。该应用程序的目标是框架4.7.1。一切都很简单,在localhost上工作得很好。当我将其部署到测试服务器(运行IIS版本8.5.9600.16384)时,会得到一些奇怪的结果。如果routeUrl等于物理页面名称,则页面将正确路由并保留友好的url结构,但如果routeUrl不相等,则会给出404。即使路由有效,路由值也不会传递到页面。Page.RouteData.Values.Count始终返回为0,即使在设置默认值时也是如此

我已经查看了Stack Overflow和互联网的其他部分,我甚至不知道有多少类似问题的人发的帖子,但在少数有建议的解决方案的案例中,没有一个对我有效。下面是我根据这些建议在web配置中更改的内容,但都没有用

我现在所拥有的:

RouteConfig.cs

    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>