2012-11-19 45 views
1

我将旧的非MVC代码集成到MVC 4项目中。旧代码的WCF服务的根目录和API子文件夹中的.SVC扩展名受基本认证。在MVC中调用WCF服务时找不到HTTP资源

首先,向所有SVC文件发布诸如(http://mysite/myservice.svc/DoCommand)的404错误。然后,我添加这样的:

routes.IgnoreRoute( “{allsvc}”,新的{allsvc = @ “ .SVC(/.*)。?”});

现在可以调用站点根目录下的SVC文件。但是,在API子文件夹中的文件SVC现在回到这个:

<Error> 
    <Message> 
    No HTTP resource was found that matches the request URI 'http://mysite/API/myservice.svc/DoCommand'. 
    </Message> 
</Error> 

如果我不包括DoCommand,然后我得到的标准WCF信息屏幕。

哦,最后,这只发生在产品开发中,与本地主机相反,一切正常。

非常感谢您的帮助。谢谢。

回答

0

您是否尝试过在web.config中设置relaxedUrlToFileSystemMapping="true",如Phil Haack所述。请参阅此相关的问题:ApiController returns 404 when ID contains period

+0

没有工作。 http://mysite/myservice.svc/DoCommand工作; http://mysite/API/myservice.svc/DoCommand不起作用,所以这是某种路由问题。 – user1044169

+0

你可以发布你的路线? – Mightymuke

+0

而这就是它令人困惑的地方。在RouteConfig.cs中我有routes.IgnoreRoute(“{* allsvc}”,新{allsvc = @“。* \。svc(/.*)?”});,所以我想MVC忽略所有对SVC文件的请求。那么,MVC之外的哪些配置会路由到SVC文件?我不知道在哪里可以找到。 – user1044169

1

答案就在这里Service Stack on MVC4

的问题是,我的子文件夹名为API,它使用随所安装的与MVC的WebAPI基础设施API的命名冲突。