Ошибка многих — что это такое и как решить?

#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 и компилятор не совсем сходятся во взглядах, поэтому может показаться, что все в порядке, но затем сборка не выполняется.

Вы можете проверить, на какую версию установлен ваш проект, щелкнув правой кнопкой мыши по проекту -> «Свойства». Перейдите на вкладку «Приложение» и проверьте в разделе «Целевая платформа».