小编Pau*_*tti的帖子

MVC路由捕获文件名作为参数

我试图使用MVC生成一个简单的WebDAV服务器,我终于到了需要向用户提供所请求文件的阶段.

我有一个路由设置,处理遍历目录结构"webdav/{*path}"工作正常,直到该路径以文件名结束的点.此时,IIS似乎确定它是静态文件,并尝试从磁盘提供该文件.由于它不在URL中指定的位置,因此返回404错误.

我没有任何更改URL的自由,我基本上需要它在表单中,否则Windows资源管理器无法使用它作为映射驱动器:

GET /webdav/Test/Test2.txt
Run Code Online (Sandbox Code Playgroud)

我已经设置了贪婪匹配的路由,因为目录结构可以有多个级别.我也定了routes.RouteExistingFiles = true;

这是在我的开发机器上使用IIS Express 8.0.

我已经设置了一个空白的MVC项目来测试它,这就是RegisterRoutes方法:

routes.RouteExistingFiles = true;

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
    name: "WebDAVGet",
    url: "webdav/{*path}",
    defaults: new { controller = "WebDAV", action = "Get", path = "" });

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

所以,要/webdav/Test/Test2在我的控制器中击中断点,但是/webdav/Test/Test2.txt会给我一个404.

有什么建议?

asp.net-mvc

8
推荐指数
2
解决办法
3499
查看次数

Asp.Net 4.5 Web API - 返回HTTP状态码207

我正在尝试创建一个简单的Web API控制器来充当WebDAV服务器,因为我只希望它允许目录列表和读取文件访问,以及与我们系统中的当前身份验证系统集成.

我已经设法在使用WebDAV客户端(DAVExplorer)时使目录和文件列表工作,但是在Windows资源管理器中映射网络驱动器只是不打球.

虽然我没有弄清楚为什么这不起作用,但有一种可能性是当WebDAV服务器返回PROPFIND请求的结果时,它会使用Http状态代码207多状态.这似乎不在对象HttpStatusCode使用的枚举器中HttpResponseMessage.

我试图找出实际上HttpResponseMessage转换回浏览器的响应,认为我可以实现自己的版本并处理自己输出状态代码,但到目前为止我没有任何运气.

有人建议我如何实现一个返回207状态代码的API控制器?

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

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

为什么这个简单的Knockout.js示例不起作用?

我正在玩Knockout.js并创建了这个简单的例子:http://jsfiddle.net/JcTxT/30/

<div id="term_grp" data-role="fieldcontain"><a>Semester:</a>

<fieldset id="term_fields" data-role="controlgroup" data-type="horizontal">
    <input type="radio" name="term" id="ss" value="ss" data-bind="checked: term" />
    <label for="ss">Sommersemester</label>
    <input type="radio" name="term" id="ws" value="ws" data-bind="checked: term" />
    <label for="ws">Wintersemester</label>
</fieldset>
Term is <span data-bind="text: pommes"></span>
Run Code Online (Sandbox Code Playgroud)

var aResult = {
    term: ko.observable("ss"),
    pommes: "TEST"
};

$(document).on('pagebeforeshow', '#mainPage', function () {
    ko.applyBindings(aResult);
});
Run Code Online (Sandbox Code Playgroud)

我期望检查一个单选按钮(值为"ss"的那个)但事实并非如此.有谁知道,为什么?

干杯

javascript jquery jquery-mobile knockout.js

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