Wiem, że zostało to pobite na śmierć, ale nie mogę tego uruchomić tak, jak powinno. Mam usługę WCF z kilkoma umowami. Wszystkie działają poprawnie, dzwoniąc bezpośrednio, np. http://merlin.com/CompanyServices/CompanyWcfService.svc/Get_Document_Dates_Received/223278 Użyłem tej usługi WCF z powodzeniem w programach InfoPath Forms i Nintex Workflows. Teraz tworzę prostą aplikację ASP.Net, taką jak zrobiono w http://www.webcodeexpert.com/2013/04/how-to-create-and-consume-wcf-services.html. Udało mi się dodać odwołanie do usługi zgodnie z opisem w artykule. Dodałem przycisk a formularz i dodaje następujący kod w przypadku Button1_Click
:Nie można znaleźć domyślnego elementu punktu końcowego, który odwołuje się do umowy
protected void Button1_Click(object sender, EventArgs e)
{
ServiceReference1.CompanyWcfServiceClient x = new ServiceReference1.CompanyWcfServiceClient();
var result = x.Get_Document_Dates_Received("223278");
}
po kliknięciu na przycisk pojawia się błąd:
"Could not find default endpoint element that references contract 'ServiceReference1.ICompanyWcfService' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element."
więc próbowałem dodanie następujących do web.config. (kopiowane bezpośrednio z pliku web.config w CompanyWcfService
<system.serviceModel>
<services>
<service name="CompanyWcfServices.CompanyWcfService" behaviorConfiguration="ServiceBehavior">
<endpoint address="" binding="webHttpBinding" contract="CompanyWcfServices.ICompanyWcfService" behaviorConfiguration="webHttpEndpointBehavior" >
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">
</endpoint>
</service>
</services>
<bindings>
<webHttpBinding>
<binding>
<security mode="None">
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name ="webHttpEndpointBehavior">
<webHttp helpEnabled ="true" faultExceptionEnabled="true" automaticFormatSelectionEnabled="true"/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
uzyskać dokładnie taki sam błąd, nie musi być coś innego dzieje g na.
końcu zrezygnował i wezwała służby takiego:
HttpWebRequest request = WebRequest.Create(@"http://merlin/Companyservices/CompanyWcfService.svc/Get_Document_Dates_Received/223278") as HttpWebRequest;
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = null;
var result = "";
try
{
response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.OK)
{
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
result = reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
result = "";
}
Spędziłem godziny czytając posty, a większość z nich sugerują, aby skopiować informacje config do pliku web.config. Wydaje mi się to problematyczne (poza tym, że nie działa). Co się stanie, jeśli będę potrzebował korzystać z usługi WCF innej firmy? Czy muszę żądać informacji o konfiguracji od strony trzeciej? I czy Visa Versa, jeśli tworzę usługę WCF zaprojektowaną do użytku przez strony trzecie, czy muszę również dostarczyć im plik konfiguracyjny?
Również. W sekcji System.ServiceModel w swojej aplikacji web.config nie potrzebujesz sekcji usługi. Usunąłbym to. Musisz tylko zdefiniować elementy wymienione w sekcji klienta. Podobnie jak zachowanieKonfiguracja lub ustawienia powiązania, jeśli dostosowałeś. –
Matt, dzięki za odpowiedź. Niestety, nadal mam ten sam błąd. – user1337493
Ten problem wydaje się być niedopasowaniem między usługą a plikiem web.config w aplikacji. Błąd wskazał, że nie można znaleźć usługi z umową "ServiceReference1.ICompanyWcfService". Zawiadomienie w web.config w aplikacji internetowej, umowa jest "CompanyWcfServices.ICompanyWcfService". Czy przypadkiem stworzyłeś usługę, dodasz do niej odwołanie do swojej aplikacji internetowej, a następnie zmienisz obszar nazw usług? –