2014-01-08 52 views
0

我在解决方案中有一个web应用程序项目和silverlight项目。我在web应用程序WCF文件,我也得到了下面的错误,而更新的ServiceReference无法更新ServiceReference或删除后再次添加?

There was an error downloading 'http://localhost:5678/DataForSilverlight.svc/_vti_bin/ListData.svc/$metadata'. 
The request failed with HTTP status 404: Not Found. 
Metadata contains a reference that cannot be resolved: 'http://localhost:5678/DataForSilverlight.svc'. 
The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error. 
If the service is defined in the current solution, try building the solution and adding the service reference again. 

我也试图将其删除,然后重新添加,而且我也尝试从Web应用程序删除WCF文件。

+0

你可能会在解决方案Silverlight项目而不是服务:http://本地主机:5678/DataForSilverlight.svc。要添加服务,必须启动并运行 –

+0

我还添加了DataForSilverlight.svc。以前它运行良好,但在对svc文件进行一些更改后,iam无法更新,我已经检查了svc文件代码中的所有内容,并且一切都很好,但它给出了上述错误 –

+0

删除服务,执行“clean project” 。再次添加。您有可能更改的端口号。 –

回答

0

当您使用动态端口通过IIS公开Web应用程序(然后是WCF服务)时,通常会发生此错误,该错误每次启动和停止解决方案的调试时都会更改。

要避免此问题,请右键单击Web项目并选择“属性”。选择标签'Web'。在名为“服务器”的组框中,插入所需的网络路径,然后单击“创建虚拟目录”按钮。 IIS将为您的Web项目创建一个虚拟目录。

enter image description here

现在,您可以为您服务引用添加到Silverlight项目。下次执行Web项目时,IIS将使用所需的网络路径执行Web应用程序。

此外,确保在您的服务类定义以下属性声明:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class DataForSilverlight 

和下面一行是存在于你的web.config文件中,<system.serviceModel>部分:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
+0

它仍然给出同样的错误 –

+0

@ GeneliaD'Souza我更新了答案。 –

+0

是的,我再次检查上述仍然相同的错误 –

0

不知道为什么,但我又在这是befor改变方法改变的变量类型

[OperationContract] 
     void SaveData(int UserId, string FileName, ExtendedImage File); 

后来改成了字符串

[OperationContract] 
     void SaveData(int UserId, string FileName, string File); 

,一切工作正常,现在

+1

看起来很奇怪,像这样的改变是WCF服务的404错误的责任。作为建议,为避免误解,最好编写一个不是类名的变量名。例如,最好在'字符串文件'中替换变量'string File'。无论如何,你解决了这个问题。 –

+0

我传递一个外部库的对象作为WCF中的方法的一个参数:p ExtendedImage就是上面的例子@AlbertoSolano –

相关问题