使用自定义RIAServices.T4代码生成时,IIS上的.svc文件生成失败

时间:2013-05-07 11:43:38

标签: wcf-ria-services t4

我有一个使用自定义DomainContextGenerator和自定义EntityGenerator的Silverlight应用程序:

[DomainServiceClientCodeGenerator("MainCodeGenerator", "C#")]
public class HrCodeGenerator : CSharpClientCodeGenerator
{
    protected override EntityGenerator EntityGenerator
    {
        get { return new HrEntityGenerator(); }
    }

    protected override DomainContextGenerator DomainContextGenerator
    {
        get { return new HrDomainContextGenerator(); }
    }
}

此类和引用的生成器包含在Silverlight应用程序的Host-project引用的类库中。

在VisualStudio 2012中启动应用程序时,一切正常,当我在浏览器中打开 http:// localhost:12345 / My-Namespace-MyService.svc 时,我可以看到服务。将应用程序部署到IIS时,.svc文件的动态生成失败,并且在打开 http://dev.example.com/My-Namespace-MyService.svc 时我刚刚收到HTTP 404。

从项目中删除HrCodeGenerator - 类后(删除DomainServiceClientCodeGeneratorAttribute将无法解决问题),一切正常。

你是否有任何关于它为何如此表现的提示以及我可以采取哪些措施来防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题。

负责客户端代码生成的类与服务本身位于同一个库中。我将这些类移到了部署到服务器的Web应用程序项目中。

我仍然不明白如何仅在编译时执行代码并且仅影响应用程序的客户端可能会影响应用程序服务器端的运行时行为。我也不明白为什么将组件移动到另一个项目来解决这个问题。

但正如我的一位同事所说:“有时候工程学与魔法无法区分......”