Asp.net mvc 3 当路由的ID部分包含一个句号时,MVC3给出了Page Not Found错误

Asp.net mvc 3 当路由的ID部分包含一个句号时,MVC3给出了Page Not Found错误,asp.net-mvc-3,http-status-code-404,Asp.net Mvc 3,Http Status Code 404,我已经在ASP.NET MVC3中创建了一个基于目录的站点,当您在该站点中导航时,会看到类似这样的页面 站点的其余部分工作正常,但是当您转到此url时,会出现页面未找到错误。我已登录到控制器,并且控制器中的操作未触发。它在我的本地机器(VS2010/W7)上运行良好,但当它被放到实时服务器(MS2003服务器IIS6)上时,它就坏了 如果url不包含最终域名部分中的“.”(默认路由上传递到可选parm“id”的位),则所有操作都有效 有人有什么想法我可以做,因为我真的想在搜索引擎优化id部分的“

我已经在ASP.NET MVC3中创建了一个基于目录的站点,当您在该站点中导航时,会看到类似这样的页面

站点的其余部分工作正常,但是当您转到此url时,会出现页面未找到错误。我已登录到控制器,并且控制器中的操作未触发。它在我的本地机器(VS2010/W7)上运行良好,但当它被放到实时服务器(MS2003服务器IIS6)上时,它就坏了

如果url不包含最终域名部分中的“.”(默认路由上传递到可选parm“id”的位),则所有操作都有效

有人有什么想法我可以做,因为我真的想在搜索引擎优化id部分的“.”

非常感谢


Jonathan

您可以使用
-
将您的url设置为
http://server/domains/details/mydomain-coop
。我不确定SEO的含义,但我无法想象它比
句点和其他标点符号在URL中有着非常具体的含义-在这种情况下,它表示文件扩展名sion,用于确定激活哪些IIS模块和筛选器(我总是混淆这两个)来处理请求

你应该仔细考虑一下这样格式化你的URL,像这样的非标准用法不是你的朋友

推测: 搜索引擎可能会使用
后面的部分来确定MIME类型,如果分数与实际页面内容不匹配,则会降低分数,或者完全忽略链接。请注意,例如,Google会根据文件扩展名和MIME类型对图像和页面进行不同的索引(不过,如果有人更了解谷歌内部的黑暗魔法,他可能会给出更好/更准确的解释。)

让ASP.NET忽略某些文件扩展名时

(正在注册自定义文件扩展名-在本例中为
.coop

来自第二个链接的重要
web.config
条目包括:

<httpHandlers> 
... 
<add verb="*" path="*.mycustomextension"> type="System.Web.UI.PageHandlerFactory"/> 

<compilation > 
      <buildProviders> 
          <add extension=".mycustomextension" type="System.Web.Compilation.PageBuildProvider" />  
      </buildProviders> 

... 
type=“System.Web.UI.PageHandlerFactory”/>

我还没有时间测试这个,但希望它能让你朝着正确的方向前进。

这与MVC3路由有关……你必须创建一个特殊的路由。为了帮助你,我们需要更多详细信息。mydomain.coop是静态的吗?或者你指的是anything.coop?完整的url也是如此,是针对特定的控制器/操作组合还是针对任何控制器/操作组合魔鬼在细节中…上面的例子是一个不起作用的URL。如果我把“”放在上面,它会起作用。我尝试过更改控制器和操作,但仍然失败。