2

我有两个使用 Ria 服务的 Silverlight 5 项目的不同版本。两者都在本地工作。旧版本 (A) 在部署到 ISS7 时有效。新版本(B)没有。版本 B 的用户/密码身份验证失败并出现以下错误:

  • Load operation failed for query 'Login'. the remote server returned an error: NotFound.

过去一周参考各种 SO 和 MSDN 帖子,我尝试了许多故障排除技术。按照此处的建议将错误日志记录添加到 web.config 会导致记录以下内容:

  • The service '/ClientBin/MyApp-Web-Services-AuthenticationService.svc' does not exist.

研究导致找到这个论坛帖子,该帖子建议使用它正在寻找的名称/路径创建一个虚拟 .svc 文件。结果:

  • The service '/ClientBin/DBCRM-Web-Services-AuthenticationService.svc' cannot be activated due to an exception during compilation. The exception message is: The ending bracket '>' for the 'ServiceHost' directive is missing in the '.svc' file..

上述错误的详细信息并不重要,因为它是我提供的空白 .svc 文件。它只是证实了该项目确实依赖于它的事实

这是踢球者......工作版本也不包含此文件,但它不会引发异常。

搜索任何关于需要该服务的参考都出人意料地在两种解决方案中都出现了结果。这两个MyApp.Web.g.cs文件是相同的(运行 CSDiff)并且都包含以下行:

  • public AuthenticationContext() : this(new WebDomainClient<IAuthenticationServiceContract>(new Uri("DBCRM-Web-Services-AuthenticationService.svc", UriKind.Relative))) { }

两者都具有相同的包/部署设置。我正在部署到文件系统,然后将文件复制到主机服务器上的 IIS。

问题:

  1. 要求此 .svc 文件的设置在哪里?它显然在版本 A 中不需要,但在版本 B 中。同样,文件MyApp.Web.g.cs是对它的唯一引用,并且它在两个版本中都存在。

  2. MyApp.Web.g.cs是一个生成的文件。Visual Studio 2010 中的哪些服务会创建此文件?另外,我可以修改它以不包括对相关.svc文件的调用吗?

我将开始将这两个解决方案合并在一起,以查看 .svc 文件在什么时候变得必要。在此期间的任何想法将不胜感激!

4

3 回答 3

1

WCF Ria Services 注册一个 HttpModule 以管理 wcf ria 服务调用。当请求到达服务器时,该模块读取 url 并了解要实例化哪个服务以及调用哪个方法。所以你没有找到任何 .svc 文件是绝对正常的
不要乱用 .g.cs 你的问题不在这里。
看看你的 web.config 文件,你应该找到这样的行

<system.web>
    <httpModules>
      <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </httpModules>
...
</system.web>

和这个

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
          <add name="DomainServiceModule" preCondition="managedHandler" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        </modules>
...
</system.webServer>
于 2012-10-27T08:34:50.417 回答
0

除了如上所述确保 Web.Config 中存在“DomainServiceModule”条目外,另一件事是 RIA 需要启用 ASP .NET 兼容模式。这是 Microsoft 的 RIA 部署指南的链接:

http://msdn.microsoft.com/en-us/library/ff426912(v=vs.91).aspx

在“配置 Web 服务器”部分的第三段中,它指出您的 Web.Config 文件中需要以下内容:

<system.serviceModel> ... <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> ... </system.serviceModel>

如果缺少此内容,您将获得问题中描述的行为。

于 2013-04-29T20:39:24.840 回答
0

在您执行任何这些操作之前,请确保bin实际部署了包含您的实际代码的常规文件夹。

我正在使用 MSDEPLOY 部署到新服务器,但它没有部署 bin 文件夹。没有它,你将无处可去!

于 2017-04-19T19:57:06.153 回答