相关疑难解决方法(0)

如何使MVC接受参数中的点?

我有以下路由配置:

routes.MapRoute(
            name: "Downloads",
            url: "downloads/{filename}",
            defaults: new { controller = "Downloads", action = "Index", filename = UrlParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

并遵循控制器代码:

public ActionResult Index(string filename)
    { ...
Run Code Online (Sandbox Code Playgroud)

当我用http://test.com/downloads/test.txt调用此Action时,我得到一个404.当我在文件名中调用没有点的Action时,它可以工作.如何让MVC将完整的文件名传递给我的参数文件名?

c# model-view-controller asp.net-mvc http-status-code-404

5
推荐指数
1
解决办法
3157
查看次数

MVC 5 WebRequest URL中的尾随点导致404

我运行MVC 5,并有一个搜索API产生以下链接:/SearchedItem.?format=json这里SearchedItem.是用户输入的搜索.由于一个dot角色,这显然会导致着名的404 .我已经研究了以下所有解决方案:

点字符'.' 在MVC Web API 2中请求诸如api/people/STAFF.45287之类的请求

URL中的点导致404使用ASP.NET mvc和IIS

当ID包含句点时,ApiController返回404

然而,无论是加斜杠(尝试都/SearchedItem./?format=json/SearchedItem.?format=json/),也不RAMMFAR工作.

寻找任何新的建议.

api url asp.net-mvc http-status-code-404

5
推荐指数
1
解决办法
578
查看次数

如何使用带有点/句点的基于MVC5属性的路由?

我基本上有一个开箱即用的MVC 5.2 app,启用了基于属性的路由(routes.MapMvcAttributeRoutes();从提供的RouteConfig.RegisterRoutes(RouteCollection routes)方法调用).

以下是HomeController:

    [Route("hello.txt")]
    [Route("hellotxt-testing")]
    public ActionResult ShowFile()
    {
        return Content("Hello world");
    }
Run Code Online (Sandbox Code Playgroud)

我可以成功访问/hellotxt-testing(证明基于属性的路由正常工作):

访问/ hellotxt测试

但如果我访问,我会得到404页/hello.txt:

访问/hello.txt

与我去的/hello404地方相比,我得到了另一个404页面:

访问/ hello404

我猜第二个404页面来自ASP.NET,而第一个是来自IIS甚至没有将请求传递给ASP.NET?

我该怎么做才能确保我能确保ASP.NET获取这些包含句点的URL?还有其他"特殊"字符也会导致问题吗?

iis asp.net-mvc attributerouting iis-8 asp.net-mvc-5.2

4
推荐指数
1
解决办法
1569
查看次数

如何接受电子邮件地址作为路线值?

我怎么能有这个简单的路线:

http://domain.com/Calendar/Unsubscribe/my@email.com
Run Code Online (Sandbox Code Playgroud)

我的路线看起来像:

routes.MapRoute(
    "Unsubscribe", 
    "Calendar/Unsubscribe/{subscriber}", 
    new { 
       controller = "Calendar", 
       action = "Unsubscribe", 
       subscriber = "" }
);
Run Code Online (Sandbox Code Playgroud)

我的行动是:

public ActionResult Unsubscribe(string subscriber)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

没有任何参数,像http://domain.com/Calendar/Unsubscribe/工作正常,但很快我添加电子邮件,我得到一个404页面:(

我有什么秘诀吗?

谢谢

asp.net-mvc routes asp.net-mvc-2

3
推荐指数
1
解决办法
1717
查看次数

WebAPI OData不能处理参数中的点(即'.')?

我有一个基本的WebAPI OData应用程序,如果参数有'.',它似乎拒绝将请求路由到我的控制器.在里面.

例如:

http://localhost.com/vroot/odata/foo( 'ABC')<==路由正确地

http://localhost.com/vroot/odata/foo( 'a.bc')<==返回404错误

即使我替换'',我也会得到相同的404错误.用%2E.

http://localhost.com/vroot/odata/foo( '一%2Ebc')<==返回404错误

这是WebAPI OData中普遍理解的问题吗?

关于可能发生的事情的任何想法(或者可能如何解决这个问题?)

c# asp.net odata asp.net-web-api

3
推荐指数
1
解决办法
1955
查看次数

带点的 URL 导致 404 错误

我有一个 Asp.Net Web Api 应用程序,它以 ip 地址作为输入并返回相应 ip 的国家/地区。当我通过以下网址时

http://localhost:portno/xx.xx.xx.xx
Run Code Online (Sandbox Code Playgroud)

它抛出 Error 404

谁能告诉我为什么?

c# iis asp.net-web-api

3
推荐指数
1
解决办法
1900
查看次数