我正在使用MVC 3,Visual Studio 2010(及其内置的开发Web服务器)在本地构建。
我正在部署到IIS6 Win2003计算机。
到目前为止,我的所有MVC3都运行良好
我已将此路由方法添加到我的Global.asax:
routes.Add("ImagesRoute",
new Route("ViewFolderName/ActionName/Images/{filename}", new ImageRouteHandler()));
这样我就可以调用URL: http://server/ViewFolderName/ActionName/Images/image.gif 并将此重新路由到Web服务器上的不同物理位置 (即在我的内容\ images文件夹中)
我已将ImageRouteHandler功能简化为:
public class ImageRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
requestContext.HttpContext.Response.Write(requestContext.RouteData.Values["filename"] as string);
requestContext.HttpContext.Response.End();
return null;
}
}
(我的完整函数实际上做了更多返回字符串响应但是以最简单的形式显示问题)
本地(VS2010及其开发网络服务器):
我可以调用我想要的任何路径,并看到返回到屏幕的文本字符串 (当然,实际文件不需要存在,因为我们永远不会那么远!)
http : //server/ViewFolderName/ActionName/Images/image.gif
http : //server/ViewFolderName/ActionName/Images/image
http : //server/ViewFolderName/ActionName/Images/image.gif.a.b.c
但不是以点结尾:
http : //server/ViewFolderName/ActionName/Images/image.
LIVE(Win 2003服务器上的IIS6):
在IIS6上,我可以成功调用此路径:
http : //server/ViewFolderName/ActionName/Images/image
但是我无法成功调用带有点的URL,例如:
http : //server/ViewFolderName/ActionName/Images/image.gif
我认为这必须与.NET4路由在IIS6上的工作方式有关? 感谢