我在解决方案中有一个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文件。
答案 0 :(得分:0)
当您使用动态端口通过IIS公开Web应用程序(然后是WCF服务)时,通常会发生此错误,每次启动时都会更改并停止解决方案的调试。
要避免此问题,请右键单击Web项目并选择“属性”。选择“Web”选项卡。在名为“Servers”的组框中,插入所需的网络路径,然后单击“创建虚拟目录”按钮。 IIS将为您的Web项目创建一个虚拟目录。
现在,您可以将服务引用添加到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);
现在一切正常