2010-01-13 22 views
5

Tôi đang phải đối mặt với vấn đề với WCF tự lưu trữ ứng dụng trong khi cố gắng chạy với cấu hình sau:Cảng đang được sử dụng bởi ứng dụng khác trong WCF

<system.serviceModel> 
    <services> 
     <service name="statisticsCollectingService"> 
     <endpoint address="net.tcp://localhost:8200/RadioStatistics/" 
       binding="netTcpBinding" 
       contract="RadioStatistics.Services.IStatisticsCollectingService" /> 
     <endpoint address="http://localhost:8100/RadioStatistics/" 
       binding="basicHttpBinding" 
       contract="RadioStatistics.Services.IStatisticsCollectingService" /> 
     </service> 

     <service name="biDataExportService"> 
     <endpoint address="net.tcp://localhost:8001/RadioStatistics/" 
        binding="netTcpBinding" 
        contract="RadioStatistics.Services.IBIDataExportService" /> 
     </service> 
    </services> 
    </system.serviceModel> 

Trường hợp ngoại lệ xảy ra như sau:

System.Configuration.ConfigurationErrorsException: Error creating context 'spring.root': The process cannot access the file because it is being used by another process ---> Spring.Objects.Factory.ObjectCreationException: Error creating object with name 'statisticsCollectingServiceHost' defined in 'config [C:\TTL\zer_rel_12_1_main_TTL_C1077\TTL\CommonTools\RadioStatistics\bin\Debug\RadioStatistics.ServerApp.vshost.exe.Config#spring/objects] line 4' : Initialization of object failed : HTTP could not register URL http://+:8000/RadioStatistics/services/ because TCP port 8000 is being used by another application. ---> System.ServiceModel.AddressAlreadyInUseException: HTTP could not register URL http://+:8000/RadioStatistics/services/ because TCP port 8000 is being used by another application. ---> System.Net.HttpListenerException: The process cannot access the file because it is being used by another process 
    at System.Net.HttpListener.AddAll() 
    at System.Net.HttpListener.Start() 
    at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen() 
    --- End of inner exception stack trace --- 
    at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen() 
    at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener) 
    at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback) 
    at System.ServiceModel.Channels.TransportChannelListener.OnOpen(TimeSpan timeout) 
    at System.ServiceModel.Channels.HttpChannelListener.OnOpen(TimeSpan timeout) 
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 
    at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) 
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 
    at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) 
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 
    at System.ServiceModel.Channels.CommunicationObject.Open() 
    at Spring.ServiceModel.Activation.ServiceHostFactoryObject.AfterPropertiesSet() in l:\projects\spring-net\trunk\src\Spring\Spring.Services\ServiceModel\Activation\ServiceHostFactoryObject.cs:line 176 
    at Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InvokeInitMethods(Object target, String name, IConfigurableObjectDefinition definition) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Objects\Factory\Support\AbstractAutowireCapableObjectFactory.cs:line 1264 
    at Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ConfigureObject(String name, RootObjectDefinition definition, IObjectWrapper wrapper) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Objects\Factory\Support\AbstractAutowireCapableObjectFactory.cs:line 1860 
    at Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InstantiateObject(String name, RootObjectDefinition definition, Object[] arguments, Boolean allowEagerCaching, Boolean suppressConfigure) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Objects\Factory\Support\AbstractAutowireCapableObjectFactory.cs:line 884 
    --- End of inner exception stack trace --- 
    at Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InstantiateObject(String name, RootObjectDefinition definition, Object[] arguments, Boolean allowEagerCaching, Boolean suppressConfigure) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Objects\Factory\Support\AbstractAutowireCapableObjectFactory.cs:line 901 
    at Spring.Objects.Factory.Support.AbstractObjectFactory.CreateAndCacheSingletonInstance(String objectName, RootObjectDefinition objectDefinition, Object[] arguments) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Objects\Factory\Support\AbstractObjectFactory.cs:line 2097 
    at Spring.Objects.Factory.Support.AbstractObjectFactory.GetObjectInternal(String name, Type requiredType, Object[] arguments, Boolean suppressConfigure) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Objects\Factory\Support\AbstractObjectFactory.cs:li 

Chạy Windows XP SP3 đã cố thực hiện những việc sau:

httpcfg set urlacl/u http://+:8100/RadioStatistics//A "D: (A ;; GX ;;; BU)"

(với tôi đoán tất cả các biến thể của các khoản tài trợ nói chung và/hoặc người sử dụng - như DU (cho người dùng tên miền)

? cũng cố gắng để thêm vào danh sách IP

httpcfg thiết iplisten -i 0.0.0.0:8100

này được sau khi tôi đã tìm thấy một sự kiện trong bản ghi sự kiện:

Không thể liên kết với giao thức cơ bản cho 0.0.0.0:8100. IP Danh sách nghe chỉ có thể chứa tham chiếu đến giao diện có thể không tồn tại trên máy này. Trường dữ liệu chứa số lỗi.

Điều tồi tệ nhất là nó đã hoạt động trong quá khứ (trước khi tôi đi nghỉ vài tuần trước). Máy dường như không thay đổi đối với tôi vì nó không bị chạm vào. Nhưng lỗi khiến tôi phát điên. Điều tồi tệ nhất là lỗi xảy ra bất kể cổng được chọn.

Của cource nó hoạt động hoàn toàn tốt sau khi basicHttpBinding được loại bỏ.

TIA

Roland

Trả lời

6

Bạn có thể có cái gì khác lắng nghe trên cổng tương tự. Hãy thử chạy

netstat -o -n -a 

để nhận danh sách tất cả các quy trình và những gì họ đang nghe.

+0

Không có kết quả. Cổng này thực sự miễn phí. Như tôi đã đề cập, việc chọn bất kỳ cổng nào khác cũng chính xác là lỗi tương tự. Tôi đã thử một số cổng khác nhau, bao gồm 80. Tôi cũng đã tắt IIS - không có kết quả: ( – Roland

0

@Roland, tôi biết đây là một bài đăng rất cũ và tôi đã thấy bạn hỏi điều này trên các trang web khác. Gần đây tôi đã gặp vấn đề này trong một thời gian rất dài. Cuối cùng tôi có hai cách để giải quyết vấn đề này. 1) Mặc dù điều này có lẽ không phải là cách được đề xuất, hãy nhận quyền quản trị cục bộ trên tài khoản chạy dịch vụ cửa sổ. Đây là lý do tại sao khi mọi người chạy VS là quản trị viên vấn đề này biến mất trên máy địa phương của họ bởi vì HTTP theo mặc định cấp quyền cho quản trị viên cục bộ.

2) Như bạn đã nói, hãy sử dụng httpcfg trên máy chủ xp/2003 để định cấu hình url và số cổng như bạn đã làm; đáng lưu ý rằng "D:(A;;GX;;;LS)" là SDDL chính xác phù hợp với tôi; Tôi đã thử những người khác nhưng không làm việc. Quan trọng không kém, không bao gồm tên dịch vụ khi cấu hình chỉ sử dụng httpcfg set urlacl -u http://+:portnumber -a D:(A;;GX;;;LS)". Và không cấu hình iplisten với httpcfg vì điều này rất có thể sẽ ngăn IIS chạy trên máy chủ. Lỗi bạn nhận được từ bản ghi sự kiện: "Không thể liên kết với phương tiện cơ bản cho 0.0.0.0:8100. Danh sách Chỉ nghe IP có thể chứa tham chiếu đến giao diện có thể không tồn tại trên máy này. số lỗi "gợi ý rằng IIS bị dừng lại. Trong thực tế, nếu bạn làm httpcfg query iplisten, bạn chỉ nên xem ipaddress 0.0.0.0 mặc định. Sau khi định cấu hình url bằng httpcfg, bạn cần phải khởi động lại http bằng net stop http và đợi mọi thứ dừng lại thành công. Sau đó, hãy thực hiện net start http. Nếu http không thể dừng đúng cách, bạn cần phải khởi động lại máy chủ sau đó IIS sẽ chạy (nếu bạn đã xóa bất kỳ ipaddress không hợp lệ nào). Sau đó, bắt đầu dịch vụ cửa sổ của bạn và kiểm tra với netstat -an | findstr "0.0:yourportnumber" nếu có kết quả thì điều đó có nghĩa là dịch vụ cửa sổ của bạn hiện đang hoạt động.

Chỉ cần thêm, tôi đã làm theo hướng dẫn trên máy chủ dev đầu tiên của chúng tôi và ban đầu nó không hoạt động vì 1) Tôi đã thêm iplisten và 2) Tôi không khởi động lại http sau khi định cấu hình url. 3) Tôi đã không kiểm tra để đảm bảo rằng iis đang chạy đúng cách. Hy vọng điều này sẽ giúp bằng cách nào đó.

Các vấn đề liên quan