public class Global : HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
private static void RegisterRoutes(ICollection<RouteBase> routes)
{
routes.Add(new ServiceRoute("Calculator", new WebServiceHostFactory(), typeof(CalculatorService)));
}
}
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true">
<serviceActivations>
<add factory="System.ServiceModel.Activation.ServiceHostFactory"
relativeAddress="Calculator.svc"
service="MyServer.CalculatorService"/>
</serviceActivations>
</serviceHostingEnvironment>
</system.serviceModel>
これを行ってhttp://localhost/MyApp/Calculator.svcにアクセスすると、AspNetCompatability が必要だというエラーが表示されます。だから私は追加[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
しましたが、それは機能します。唯一のことは、代替の非httpバインディングを使用したい場合、サービスが代替のトランスポート手段(httpだけでなく)を使用することを心配していることです。
奇妙なことに、属性を Allowed または Required に設定しないと、ページを再構築するとエラーが発生します。そのエラーが発生した後、更新を押すとすべて問題ありません。また、Web ブラウザーを介して svc を照会した場合だけではありませんが、アプリがある場合、最初に接続したときにクラッシュし (サーバーが再起動された場合)、その後は動作します。何を与える?