#c# #.net #wcf #web-services
#c# #.net #wcf #веб-сервисы
Вопрос:
Я получил много исключений, таких как:
Error 95 The type or namespace name 'Web' does not exist in the namespace 'MyProj.System' (are you missing an assembly reference?) C:ProjectsSolutionMyProjWeb ReferencesGeneralServicesReference.cs 269 24 MyProj
Error 108 The type or namespace name 'Uri' does not exist in the namespace 'MyProj
.System' (are you missing an assembly reference?) C:ProjectsSolutionMyProjWeb ReferencesGeneralServicesReference.cs 322 43 MyProj
Единственное, что я исправил, это добавление службы WCF (у меня уже есть веб-службы в том же проекте). Как я могу устранить эти ошибки??
Откуда они взялись??
По какой-то причине, я не знаю, люди закрыли эти вопросы, потому что они думают, что это поддельный вопрос. Так что это не поддельный вопрос, и если им нужна дополнительная информация — они могут быть конкретными и спросить, и я предоставлю ее. Я знаю, что это выглядит как очень общий вопрос, но я действительно не знаю, какую информацию добавить.
Это точно не проблема ссылок. Это произошло после того, как я добавил службу wcf и все ошибки были указаны в файле Reference.cs, который сгенерирован после добавления внешнего веб-сервиса.
* РЕДАКТИРОВАТЬ*
Вот код службы WCF, который я добавил. Я не уверен, что это проблема:
using System.Collections.Generic;
using System.Linq;
using MyProj.Domain.Business.Entities.System.Calls;
using MyProj.Domain.Business.EntitiesRepository.System.Calls;
using StructureMap;
namespace MyProj.System.WcfServices
{
public class SystemService : MyProjService, ISystemService
{
#region Calls
public Reason[] GetCallReasons()
{
IReasonRepository rep =
ObjectFactory.GetInstance<IReasonRepository>();
return rep.GetReasonsList().ToArray();
}
public Call InsertCall(long reasonId, string phoneNumber, string description)
{
ICallRepository rep =
ObjectFactory.GetInstance<ICallRepository>();
return rep.Insert(User.UserCompany.CompanyId, reasonId, phoneNumber, description);
}
public void UpdateCall(long callId, long reasonId, string phoneNumber, string description)
{
ICallRepository rep =
ObjectFactory.GetInstance<ICallRepository>();
rep.Update(User.UserCompany.CompanyId, callId, reasonId, phoneNumber,
description);
}
public void CloseCall(long callId)
{
ICallRepository rep =
ObjectFactory.GetInstance<ICallRepository>();
rep.CloseCall(User.UserCompany.CompanyId, callId);
}
public IList<CallsListItem> GetCallsList(bool? isClosed)
{
ICallRepository rep =
ObjectFactory.GetInstance<ICallRepository>();
return rep.GetCallsList(User.UserCompany.CompanyId, isClosed);
}
public Call GetCall(long callId)
{
ICallRepository rep =
ObjectFactory.GetInstance<ICallRepository>();
return rep.GetCall(User.UserCompany.CompanyId, callId);
}
#endregion
}
}
* Еще одна ПРАВКА*
Я помню, что я также установил ef4.1 отсюда.
Может быть, это что-то делает ??..
* Еще одна ПРАВКА*
Я думаю, что я понял это! но я все еще не знаю, как это исправить..
Файл, который создает ошибки, имеет using System
, using System.Web
и так далее. В Im My project у меня также есть системная папка, в которой находится служба WCF MyProj/System/WcfServices/SystemService.svc
. Итак, создается файл cs с пространством имен MyProj.System.WcfServices
. Это пространство имен перепутано с системным пространством имен! Потому что файл, который создает ошибки, генерируется системой (это файл References.cs, созданный для веб-ссылки) Я не могу отредактировать файл. Как я могу это решить?..
Комментарии:
1. Вы говорите, что это «исключения», но они выглядят как ошибки сборки. Они возникают при компиляции программы или ее запуске?
2. Можете ли вы добавить код для WCF, который вы добавили, а также включить все фреймворки, на которые вы ссылаетесь.
3. @Генри Джексон: Вы правы — это ошибки сборки. Я рассматриваю их как исключения.
4. @jon3laze: Я добавил код для WCF, но я не уверен, что проблема в этом.
5. Как насчет того, чтобы сузить проблему? Закомментируйте один из методов и создайте. Вы все еще получаете ошибку? Да, затем закомментируйте другую и создайте? Все еще получаете ошибку? Нет? Тогда проблема была в этом методе.
Ответ №1:
Одним из решений было бы прекратить называть папки «System»!
Другим решением было бы уточнить системные пространства имен:
using global::System;
using global::System.Web.UI;
и т.д.
Комментарии:
1. Спасибо. Какое имя я могу присвоить своей системной папке?
2. Я не знаю, как вы должны это назвать, поскольку я не знаю, для чего это.
Ответ №2:
Это означает, что вам не хватает ссылки на сборку. Например. вы ссылаетесь на тип в своем коде, для которого вы не добавили ссылку в свой проект. Похоже, вам нужно добавить ссылку на System.Перейдите в Интернет, щелкнув правой кнопкой мыши по вашему проекту и выбрав «Добавить ссылку».
Если это не сработает, убедитесь, что ваш проект нацелен на полный.NET framework вместо «Профиля клиента» — сделайте это, щелкнув правой кнопкой мыши по вашему проекту и выбрав «Свойства», а затем установите «Target Framework» на вкладке «Приложение».
Комментарии:
1. Это абсолютно не проблема ссылок. У меня уже есть System. Веб и система. Uri и все другие запрошенные им ссылки. Проект уже работал раньше. Все ошибки связаны с файлом Reference.cs, который сгенерировал в Web ссылку на веб-службу.
Ответ №3:
Даже если кажется, что ссылки добавлены правильно, возможно, имеет место несоответствие версии .NET? Клиент .NET 4 не поддерживает все функции WCF, так что это может быть проблемой. Иногда intellisense и компилятор не совсем сходятся во взглядах, поэтому может показаться, что все в порядке, но затем сборка не выполняется.
Вы можете проверить, на какую версию установлен ваш проект, щелкнув правой кнопкой мыши по проекту -> «Свойства». Перейдите на вкладку «Приложение» и проверьте в разделе «Целевая платформа».