【发布时间】:2012-04-02 02:14:12
【问题描述】:
所以今天我决定要从 WCF 服务中删除 .svc 文件,并开始在网上查找。
这是我所做的逐步过程:
第 1 步:我添加了 global.asax
void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("Authorization", new WebServiceHostFactory(), typeof(Authenticator)));
RouteTable.Routes.Add(new ServiceRoute("Miscellaneous", new WebServiceHostFactory(), typeof(Misc)));
}
注意:Authenticator 和 Misc 是我的接口实现
第 2 步:我启用了 asp.net 兼容性
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
第 3 步:我将[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 添加到我的每个接口实现中。
第 4 步:我必须将 [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest)] 添加到界面中的每个方法中。我不知道这是做什么的,但没有它就会出错。
现在它“工作”了,但是当我导航到 root/Authorization(授权是我的第一个服务的名称)时,它告诉我没有找到端点。
我的端点在我的 web.config 中指定如下:
<service name="AuthenticatorService.Authenticator">
<endpoint address="auth" binding="basicHttpBinding" name="AuthEndpoint"
contract="AuthInterface.IAuthenticator" />
<endpoint address="mex" binding="mexHttpBinding" name="MetadataEndpoint"
contract="IMetadataExchange" />
</service>
我对 WCF 很陌生,所以这可能是一些愚蠢的错误。
【问题讨论】:
-
嗯,你为什么要删除 .svc 文件?
-
因为我读到你可以,但我不喜欢那里。
-
有时,在您开始尝试偏离标准做法之前,以正常方式学习新技术会更容易。特别是如果您没有充分的理由选择(不仅仅是不喜欢它)。如果您觉得顽固,可以仔细阅读右侧的“相关”链接,您可以在其中找到 WCF removing .svc extention 等。
-
你说得对,我决定不这样做。对我来说没有真正的收获。