Я создал модель, в которой у меня есть все мои классы и методы, и теперь я хочу вызвать эти методы из службы WCF.
Однако, когда я ссылаюсь на модель DLL и пытаюсь вернуть список объектов, я получаю следующую ошибку: -
Не удалось найти тип или имя пространства имен 'myModel' (отсутствует директива using или ссылка на сборку?)
Разве нельзя вызвать DLL из веб-службы WCF? Я что-то не так делаю?
Мой код в Сервисе довольно простой
using myModel;
и затем: -
public ObservableCollection<myObject> QueryUser(string strUserName)
{
ObservableCollection<myObject> _users = new ObservableCollection<myObject>();
//do stuff
return _users;
}
------------------------------- РЕДАКТИРОВАТЬ --------------- --------------------------
Вот подробный пример того, как работает мой код
МОДЕЛЬ: -
EntryAccess.cs // класс создан, так как я не могу создать сторонний dll из другого проекта
public static ObservableCollection<UserTweet> QueryUserTimeline(string strScreenName)
{
ObservableCollection<UserTweet> _userTweets = new ObservableCollection<UserTweet>();
UserActions userActions = new UserActions();
_userTweets = userActions.QueryUserTimeline(strScreenName);
return _userTweets;
}
UserActions.cs
с использованием LinqToTwitter;
public ObservableCollection<UserTweet> QueryUserTimeline(string strScreenName)
{
ObservableCollection<UserTweet> _userTweets = new ObservableCollection<UserTweet>();
var statusTweets =
from tweet in twitterCtx.Status
where tweet.Type == StatusType.User
&& tweet.ScreenName == strScreenName
select tweet;
foreach (var tweet in statusTweets)
{
UserTweet userTweet = new UserTweet();
userTweet.ProfileImage = tweet.User.ProfileImageUrl;
userTweet.TweetText = tweet.Text;
userTweet.UserName = tweet.User.ScreenName;
userTweet.Created = tweet.CreatedAt;
_userTweets.Add(userTweet);
}
return _userTweets;
}
СЕРВИС: -
service.cs
Использование модели;
public ObservableCollection<UserTweet> QueryUserTimeline(string strScreenName)
{
ObservableCollection<UserTweet> _userTweets = new ObservableCollection<UserTweet>();
_userTweets = EntryAccess.QueryUserTimeline(strScreenName);
return _userTweets;
}
IService.cs
Использование модели;
[OperationContract]
ObservableCollection<UserTweet> QueryUserTimeline(string strScreenName);
App.Config: -
<system.web>
<compilation debug="true" />
</system.web>
<!-- When deploying the service library project, the content of the config file must be added to the host's
app.config file. System.Configuration does not support config files for libraries. -->
<system.serviceModel>
<services>
<service name="TwitterWCF.Service1">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
contract="TwitterWCF.IService1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/Design_Time_Addresses/TwitterWCF/Service1/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="True"/>
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>