无法更新ServiceReference或删除后再次添加?

时间:2014-01-08 21:08:39

标签: c# asp.net .net wcf silverlight

我在解决方案中有一个Web应用程序项目和silverlight项目。我在Web应用程序中有WCF文件,我在更新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文件。

2 个答案:

答案 0 :(得分:0)

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

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

enter image description here

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

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

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

并且您的Web.Config文件中存在以下行:<system.serviceModel>部分:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

答案 1 :(得分:0)

不知道为什么但是我再次更改了方法中的变量类型,这是变更的

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

后来将其更改为字符串

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

现在一切正常