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

C# 删除后无法更新ServiceReference或再次添加?,c#,asp.net,.net,wcf,silverlight,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

我在解决方案中有一个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文件。

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

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

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

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

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class DataForSilverlight
并且在您的Web.Config文件的
部分中存在以下行:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

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

[OperationContract]
        void SaveData(int UserId, string FileName, ExtendedImage File);
后来改成了字符串

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

现在一切正常

解决方案中可能有Silverlight项目,但服务中没有:。要添加服务,它必须启动并运行。我还添加了DataForSilverlight.svc。以前它工作得很好,但是在svc文件中做了一些更改后我无法更新,我已经检查了svc文件的所有代码,一切都很好,但是它提供了上面的errorRemove服务,执行“clean project”。再加一次。您的端口号可能会更改。请再次检查您是否仍在端口5678上。我将特定端口号设置为5678,并且清理了项目并重新构建了它。@GeneliaD'Souza请检查一下。看起来很奇怪,这样的更改导致WCF服务出现404错误。作为建议,为了避免误解,最好编写一个不是类名称的变量名。例如,最好将变量“string File”替换为“string File”。无论如何,您解决了这个问题。我将一个外部库的对象作为参数传递给WCF中的方法:p ExtendedImage就是上面@AlbertoSolano的例子